Heap sorting and heap sorting algorithms
1 # include <iostream> 2 using namespace std; 3 int heap [101]; 4 int heap_size; 5 void put (int d) // heap [1] inserts 6 {7 int now, next; 8 heap [++ heap_size] = d; 9 now = heap_size; 10 while (now> 1) 11 {12 next = now/2; // parent node 13 if (heap [now]> = heap [next]) 14 break; 15 swap (heap [now], heap [next]); 16 now = next; 17} 18} 19 int get () // heap [1] obtain 20 {21 int now = 1, next, res = heap [1]; 22 heap [1] = heap [heap_size --]; // retrieve the end element 23 while (now * 2 <= heap_size) 24 {25 next = now * 2; // next left child 26 if (next
Stl
1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 using namespace std; 5 int a[10000001]; 6 int main() 7 { 8 int n; 9 cin>>n;10 for(int i=1;i<=n;i++)11 {12 //cin>>a[i];13 scanf("%d",&a[i]);14 }15 make_heap(a+1,a+n+1);16 sort_heap(a+1,a+n+1);17 for(int i=1;i<=n;i++)18 {19 //cout<<a[i]<<endl;20 printf("%d\n",a[i]);21 }22 return 0;23 }