DSA Selection Sort algorithm in c programming language with easy and simple way

				
					#include <stdio.h>

void selectionSort(int arr[], int n) {
    int i, j, min_idx, temp;
    
    for (i = 0; i < n - 1; i++) {
        min_idx = i;
        
        for (j = i + 1; j < n; j++) {
            if (arr[j] < arr[min_idx]) {
                min_idx = j;
            }
        }
        
    
        temp = arr[min_idx];
        arr[min_idx] = arr[i];
        arr[i] = temp;
    }
}


void printArray(int arr[], int size) 
{
    int i;
    for (i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() {
    int n, i;

    printf("Enter number of elements: ");
    scanf("%d", &n);

    int arr[n];

    printf("Enter %d elements: \n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    
    
    selectionSort(arr, n);
    
    printf("Sorted array in ascending order (Selection Sort): \n");
    printArray(arr, n);
    
    return 0;
}
				
			

DSA Bubble Sort algorithm c programming language with easy and simple way

				
					#include <stdio.h> 

void bubbleSort(int arr[], int n) {
    int i, j, temp;
    for (i = 0; i < n - 1; i++) {
        for (j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                // Swap arr[j] and arr[j+1]
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

void printArray(int arr[], int size) {
    int i;
    for (i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() {
    int n, i;

    printf("Enter the number of elements: ");
    scanf("%d", &n);

    int arr[n];
    printf("Enter %d elements: \n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    
    
    bubbleSort(arr, n);
    
    printf("Sorted array in ascending order (Bubble Sort): \n");
    printArray(arr, n);
    
    return 0;
}

				
			

DSA Heap Sort algorithm c programming language with easy and simple way

DSA Insertation Sort algorithm c programming language with easy and simple way

				
					#include <stdio.h>

void insertSort(int arr[], int n) {
    int i, key, j;
    for (i = 1; i < n; i++) {
        key = arr[i];
        j = i - 1;
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}

void printArray(int arr[], int n) {
    int i;
    for (i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");
}

int main() {
    int n, i;

    printf("Enter number of elements: ");
    scanf("%d", &n);

    int arr[n];
    printf("Enter %d elements: \n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    insertSort(arr, n);

    printf("Sorted array in ascending order (Insertation Sort) \n");
    printArray(arr, n);

    return 0;
}

				
			

DSA Merge Sort algorithm c programming language with easy and simple way

				
					#include <stdio.h>

void heapify(int arr[], int n, int i) {
    int largest = i;
    int left = 2 * i + 1;
    int right = 2 * i + 2;

    if (left < n && arr[left] > arr[largest])
        largest = left;

    if (right < n && arr[right] > arr[largest])
        largest = right;

    if (largest != i) {
        int temp = arr[i];
        arr[i] = arr[largest];
        arr[largest] = temp;

        heapify(arr, n, largest);
    }
}

void heapSort(int arr[], int n) {
    int i;
    for (i = n / 2 - 1; i >= 0; i--)
        heapify(arr, n, i);

    for (i = n - 1; i > 0; i--) {
        int temp = arr[0];
        arr[0] = arr[i];
        arr[i] = temp;

        heapify(arr, i, 0);
    }
}

void printArray(int arr[], int n) {
    int i;
    for (i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");
}

int main() {
    int n, i;

    printf("Enter the number of elements: ");
    scanf("%d", &n);

    int arr[n];
    printf("Enter %d elements: \n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    heapSort(arr, n);

    printf("Sorted array in ascending order (Heap Sort) \n");
    printArray(arr, n);

    return 0;
}

				
			
				
					#include <stdio.h> 

void merge(int arr[], int left, int mid, int right) {
    int i, j, k;
    int n1 = mid - left + 1;
    int n2 = right - mid;

    int L[n1], R[n2];

    for (i = 0; i < n1; i++){
	
        L[i] = arr[left + i];}
    for (j = 0; j < n2; j++){
	
        R[j] = arr[mid + 1 + j];}  

    i = 0;
    j = 0;
    k = left;
    while (i < n1 && j < n2) {
        if (L[i] <= R[j]) {
            arr[k] = L[i];
            i++;
        } else {
            arr[k] = R[j];
            j++;
        }
        k++;
    }

    while (i < n1) {
        arr[k] = L[i];
        i++;
        k++;
    }

    while (j < n2) {
        arr[k] = R[j];
        j++;
        k++;
    }
}

void mergeSort(int arr[], int left, int right) {
    if (left < right) {
        int mid = left + (right - left) / 2;
        
        mergeSort(arr, left, mid);
        mergeSort(arr, mid + 1, right);
        
        merge(arr, left, mid, right);
    }
}

void printArray(int arr[], int size) {
    int i;
    for (i = 0; i < size; i++)
        printf("%d ", arr[i]);
    printf("\n");
}

int main() {
    int n, i;

    printf("Enter number of elements: ");
    scanf("%d", &n);

    int arr[n];
    printf("Enter %d elements: \n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }


    mergeSort(arr, 0, n - 1);

    printf("Sorted array in ascending order (Merge Sort): \n");
    printArray(arr, n);

    return 0;
}

				
			

DSA Quick Sort algorithm c programming language with easy and simple way

				
					#include <stdio.h>

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

int partition(int arr[], int low, int high) {
    int pivot = arr[high];
    int i = (low - 1);

    int j;
    for (j = low; j < high; j++) {
        if (arr[j] < pivot) {
            i++;
            swap(&arr[i], &arr[j]);
        }
    }
    swap(&arr[i + 1], &arr[high]);
    return (i + 1);
}

void quickSort(int arr[], int low, int high) {
    if (low < high) {
        int pi = partition(arr, low, high);
        quickSort(arr, low, pi - 1);
        quickSort(arr, pi + 1, high);
    }
}

void printArray(int arr[], int size) {
    int i;
    for (i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() {
    int n, i;

    printf("Enter number of elements: ");
    scanf("%d", &n);

    int arr[n];
    printf("Enter %d elements: \n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    quickSort(arr, 0, n - 1);

    printf("Sorted array in ascending order (Quick Sort): \n");
    printArray(arr, n);

    return 0;
}

				
			

DSA Radix Sort algorithm c programming language with easy and simple way

				
					#include <stdio.h>

int getMax(int arr[], int n) {
    int max = arr[0];
    int i;
    for (i = 1; i < n; i++) {
        if (arr[i] > max)
            max = arr[i];
    }
    return max;
}

void countingSort(int arr[], int n, int exp) {
    int output[n];
    int count[10] = {0};

    int i;
    for (i = 0; i < n; i++)
        count[(arr[i] / exp) % 10]++;

    for (i = 1; i < 10; i++)
        count[i] += count[i - 1];

    for (i = n - 1; i >= 0; i--) {
        output[count[(arr[i] / exp) % 10] - 1] = arr[i];
        count[(arr[i] / exp) % 10]--;
    }

    for (i = 0; i < n; i++)
        arr[i] = output[i];
}

void radixSort(int arr[], int n) {
    int max = getMax(arr, n);
    int exp;
    for (exp = 1; max / exp > 0; exp *= 10)
        countingSort(arr, n, exp);
}

void printArray(int arr[], int n) {
    int i;
    for (i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");
}

int main() {
    int n, i;

    printf("Enter number of elements: ");
    scanf("%d", &n);

    int arr[n];

    printf("Enter %d elements: \n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    radixSort(arr, n);

    printf("Sorted array in ascending order (Radix Sort): \n");
    printArray(arr, n);

    return 0;
}

				
			

1. Bubble Sort:

  • Method: Repeatedly swap adjacent elements if they are in the wrong order.
  • Time Complexity: O(n²)
  • Space Complexity: O(1)
  • Best For: Small or nearly sorted arrays.

2. Selection Sort:

  • Method: Find the minimum element and place it at the beginning, repeat for remaining elements.
  • Time Complexity: O(n²)
  • Space Complexity: O(1)
  • Best For: Small arrays, simple to implement.

3. Insertion Sort:

  • Method: Build a sorted array one element at a time, inserting elements in the correct position.
  • Time Complexity: O(n²)
  • Space Complexity: O(1)
  • Best For: Small or nearly sorted arrays.

4. Merge Sort:

  • Method: Divide the array into halves, sort each half, and merge them.
  • Time Complexity: O(n log n)
  • Space Complexity: O(n)
  • Best For: Large arrays, stable sorting.

5. Quick Sort:

  • Method: Pick a pivot element, partition the array, and sort sub-arrays recursively.
  • Time Complexity: O(n log n) (average), O(n²) (worst)
  • Space Complexity: O(log n)
  • Best For: General-purpose, fast in practice.

6. Heap Sort:

  • Method: Build a max-heap, then repeatedly extract the largest element.
  • Time Complexity: O(n log n)
  • Space Complexity: O(1)
  • Best For: Memory-constrained environments.

7. Radix Sort:

  • Method: Sort elements digit by digit, starting from the least significant digit.
  • Time Complexity: O(nk) (k is the number of digits)
  • Space Complexity: O(n)
  • Best For: Integers or fixed-length strings.

LEAVE A REPLY

Please enter your comment!
Please enter your name here