KeyPoint: Find the key parent node
The fastest way to find the largest single thread
#include "stdlib.h" #include "stdio.h" void Findmax (int *arr, int size) {int totparent = SIZE/2-1;for (; Totparent >= 0;totparent--) {int parent = Totparent;int Child = 2 * totparent + 1;if (Child < size-1 && Arr[child] < arr [child + 1]) {child++;} if (Arr[parent] < Arr[child]) {int tmp = Arr[child];arr[child] = arr[parent];arr[parent] = tmp;}}} void Printarr (int *arr, int length) {for (int i = 0;i < length;i++) {printf ("%d ", Arr[i]);} printf ("\ n");} void Sortarr (int *arr, int length) {for (int i = 0;i < length-1;i++) {Findmax (arr + i, length-i);p Rintarr (arr + i, le ngth-i);}} int main () {int arr[10] = {0,2,87,49,34,62,53,6,44,90};int length = sizeof (arr)/sizeof (int); Sortarr (arr, length); Printarr (arr, length); System ("pause"); return 0;}
C Language Implementation Push sort