0% found this document useful (0 votes)
27 views9 pages

Assign 3 Riya Daa

The document contains implementations of three sorting algorithms: Merge Sort, Heap Sort, and Counting Sort in C. Each algorithm includes a main function that demonstrates sorting an array and printing the original and sorted arrays. The code is structured with functions for merging, heapifying, and counting, showcasing different sorting techniques.

Uploaded by

street28gamer
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views9 pages

Assign 3 Riya Daa

The document contains implementations of three sorting algorithms: Merge Sort, Heap Sort, and Counting Sort in C. Each algorithm includes a main function that demonstrates sorting an array and printing the original and sorted arrays. The code is structured with functions for merging, heapifying, and counting, showcasing different sorting techniques.

Uploaded by

street28gamer
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

RIYA DESHMANKAR

2300290100212
NAME- RISHI RAMAN SINHA SEC-C ROLLNO-2300290100208

DAA LAB ASSIGNMENT- 3

IMPLEMENT MERGE SORT


#include <stdio.h>

void merge(int arr[], int left, int mid, int right) {

int n1 = mid - left + 1;

int n2 = right - mid;

int leftArray[n1], rightArray[n2];

for (int i = 0; i < n1; i++)

leftArray[i] = arr[left + i];

for (int j = 0; j < n2; j++)

rightArray[j] = arr[mid + 1 + j];

int i = 0, j = 0, k = left;

while (i < n1 && j < n2) {

if (leftArray[i] <= rightArray[j]) {

arr[k] = leftArray[i];

i++;

} else {

arr[k] = rightArray[j];

j++;

k++;

while (i < n1) {

arr[k] = leftArray[i];
i++;

k++;

while (j < n2) {

arr[k] = rightArray[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) {

for (int i = 0; i < size; i++) {

printf("%d ", arr[i]);

printf("\n");

}
int main() {

int arr[] = {38, 27, 43, 3, 9, 82, 10};

int n = sizeof(arr) / sizeof(arr[0]);

printf("Original array: ");

printArray(arr, n);

mergeSort(arr, 0, n - 1);

printf("Sorted array: ");

printArray(arr, n);

return 0;

IMPLEMENT HEAP SORT

#include <stdio.h>

void swap(int *a, int *b) {

int temp = *a;

*a = *b;

*b = temp;

}
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) {

swap(&arr[i], &arr[largest]);

heapify(arr, n, largest);

void heapSort(int arr[], int n) {

for (int i = n / 2 - 1; i >= 0; i--) {

heapify(arr, n, i);

for (int i = n - 1; i > 0; i--) {

swap(&arr[0], &arr[i]);

heapify(arr, i, 0);

}
}

void printArray(int arr[], int n) {

for (int i = 0; i < n; i++) {

printf("%d ", arr[i]);

printf("\n");

int main() {

int arr[] = {12, 11, 13, 5, 6, 7};

int n = sizeof(arr) / sizeof(arr[0]);

printf("Original array: \n");

printArray(arr, n);

heapSort(arr, n);

printf("Sorted array: \n");

printArray(arr, n);

return 0;

}
IMPLEMENT COUNTING SORT

#include <stdio.h>

void countingSort(int arr[], int n) {

int max = arr[0];

for (int i = 1; i < n; i++) {

if (arr[i] > max)

max = arr[i];

int count[max + 1];

for (int i = 0; i <= max; i++) {

count[i] = 0;

for (int i = 0; i < n; i++) {

count[arr[i]]++;

int index = 0;

for (int i = 0; i <= max; i++) {

while (count[i] > 0) {

arr[index++] = i;

count[i]--;

}
void printArray(int arr[], int n) {

for (int i = 0; i < n; i++) {

printf("%d ", arr[i]);

printf("\n");

int main() {

int arr[] = {4, 2, 2, 8, 3, 3, 1};

int n = sizeof(arr) / sizeof(arr[0]);

printf("Original array: ");

printArray(arr, n);

countingSort(arr, n);

printf("Sorted array: ");

printArray(arr, n);

return 0;

You might also like