what is Heap Sort algorithm
Heap Sort Algorithm
Definition
one way of sorting algorithms by using binary tree data structure
Algorithm steps
insert data into binary tree and print out from the tree
- insert data into binary tree
- The data sorted as binary tree
Avg.
Worst time complexity
space complexity
stability
no
insert time complexity
print time complexity
Java code
public static void heapSort(int arr[]) {
int n = arr.length;
// Build heap (rearrange array)
for (int i = n / 2 - 1; i >= 0; i--)
heapTree(arr, n, i);
// One by one extract an element from heap
for (int i = n - 1; i > 0; i--) {
// Move current root to end
int temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;
// call max heapify on the reduced heap
heapTree(arr, i, 0);
}
}
// To heapify a subtree rooted with node i which is
// an index in arr[]. n is size of heap
public static void heapTree(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) {
int swap = arr[i];
arr[i] = arr[largest];
arr[largest] = swap;
// Recursively heapify the affected sub-tree
heapTree(arr, n, largest);
}
}
*this code is from https://www.geeksforgeeks.org/heap-sort/
0 개의 댓글:
댓글 쓰기