NAMA : DANDY ALFIANTO
NIM : 41119189
UNIVERSITAS DIAN NUSANTARA
Manfaat
:
- Untuk
mengatur sekelompok bilangan dengan urutan dari kecil ke besar
Program :
// C++ program for implementation
of Heap Sort
#include <iostream>
using namespace std;
// To heapify a subtree rooted
with node i which is
// an index in arr[]. n is size
of heap
void heapify(int arr[], int n,
int i)
{
int
largest = i; // Initialize largest as root
int
l = 2 * i + 1; // left = 2*i + 1
int
r = 2 * i + 2; // right = 2*i + 2
//
If left child is larger than root
if
(l < n && arr[l] > arr[largest])
largest
= l;
//
If right child is larger than largest so far
if
(r < n && arr[r] > arr[largest])
largest
= r;
//
If largest is not root
if
(largest != i) {
swap(arr[i],
arr[largest]);
//
Recursively heapify the affected sub-tree
heapify(arr,
n, largest);
}
}
// main function to do heap sort
void heapSort(int arr[], int n)
{
//
Build heap (rearrange array)
for
(int i = n / 2 - 1; i >= 0; i--)
heapify(arr,
n, i);
//
One by one extract an element from heap
for
(int i = n - 1; i >= 0; i--) {
//
Move current root to end
swap(arr[0],
arr[i]);
//
call max heapify on the reduced heap
heapify(arr,
i, 0);
}
}
/* A utility function to print
array of size n */
void printArray(int arr[], int n)
{
for
(int i = 0; i < n; ++i)
cout
<< arr[i] << " ";
cout
<< "\n";
}
// Driver program
int main()
{
int
arr[] = { 12, 11, 13, 5, 6, 7 };
int
n = sizeof(arr) / sizeof(arr[0]);
heapSort(arr,
n);
cout<<"PROGRAM
INSERTION SORT"<<endl;
cout<<"-----------------------"<<endl;
cout<<"DANDY
ALFIANTO-41119189"<<endl;
cout<<endl;
cout
<< "Sorted array is \n";
printArray(arr,
n);
}

referensi :
https://www.geeksforgeeks.org/cpp-program-for-heap-sort/


0 komentar:
Posting Komentar