1 #include2 using namespace std; 3 int heap[101]; 4 int heap_size; 5 void put(int d) //heap[1]为堆顶 插入 6 { 7 int now, next; 8 heap[++heap_size] = d; 9 now = heap_size;10 while(now > 1)11 {12 next = now/2;// 父节点 13 if(heap[now] >= heap[next]) 14 break;15 swap(heap[now], heap[next]);16 now = next;17 }18 }19 int get() //heap[1]为堆顶 获取 20 {21 int now=1, next, res= heap[1];22 heap[1] = heap[heap_size--];//取出末尾元素 23 while(now * 2 <= heap_size)24 {25 next = now * 2;// next 左孩子 26 if (next < heap_size && heap[next + 1] < heap[next])27 next++;28 if (heap[now] <= heap[next]) 29 break;30 swap(heap[now], heap[next]);31 now = next;32 }33 return res;34 }35 36 int main()37 {38 int n;39 cin>>n;40 for(int i=1;i<=n;i++)41 {42 int dr;43 cin>>dr;44 put(dr);45 }46 for(int i=1;i<=n;i++)47 {48 cout< <
stl
1 #include2 #include 3 #include 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< <