0% found this document useful (0 votes)
17 views3 pages

Document 1

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

Document 1

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

EXPERIMENT NO.

6
Program Name:
Write a program in C for Heap Sort.

Theory Concept:
Heap Sort is a comparison-based sorting algorithm that uses a binary heap data
structure to create a sorted array. It is an efficient sorting technique and falls
under the category of in-place sorting algorithms, as it requires only a constant
amount of additional memory. Heap sort has a time complexity of O(n log n)
for all cases (best, average, and worst).

Implementation:
#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;
}

Output/Conclusion:
Original array:
12 11 13 5 6 7
Sorted array:
5 6 7 11 12 13

You might also like