函数heap_sort使用堆排序方法对数组arr进行排序,排序后数据为降序。相关代码如下,请补充缺失部分。 void heap_arrange(int arr[], int cur, int cnt) 调整为小顶堆 { int heaptop_val = arr[cur]; 堆顶的值 while (cur int left = 2 * cur + 1; int right = 2 * cur + 2; int min = -1; int min_val = ______; if (left min = left; min_val = arr[left]; } if (right min = right; } if (min == ______) break; arr[cur] = ______; cur = ______; } arr[cur] = ______; } void heap_sort(int arr[], int cnt) { int i; for (i = cnt 2 - 1; i = 0; --i) { heap_arrange(arr, i, cnt); } for (i = cnt - 1; i 0; --i) { int tmp; tmp = arr[0]; arr[0] = arr[i]; arr[i] = tmp; heap_arrange(arr, 0, i); } }
输入描述:
第一行为数据个数 第二行为输入数据


输出描述:
排序过程的中间数据,及已经排好序的数据
示例1

输入

10
100 32 3 6 24 86 23 90 78 3

输出

origin:
100 
 32   3 
  6  24  86  23 
 90  78   3 

make heap:
  3 
  6   3 
 78  24  86  23 
 90 100  32 

sort i=9
 32 
  6   3 
 78  24  86  23 
 90 100   3 

  3 
  6  23 
 78  24  86  32 
 90 100   3 

sort i=8
100 
  6  23 
 78  24  86  32 
 90   3   3 

  6 
 24  23 
 78 100  86  32 
 90   3   3 

sort i=7
 90 
 24  23 
 78 100  86  32 
  6   3   3 

 23 
 24  32 
 78 100  86  90 
  6   3   3 

sort i=6
 90 
 24  32 
 78 100  86  23 
  6   3   3 

 24 
 78  32 
 90 100  86  23 
  6   3   3 

sort i=5
 86 
 78  32 
 90 100  24  23 
  6   3   3 

 32 
 78  86 
 90 100  24  23 
  6   3   3 

sort i=4
100 
 78  86 
 90  32  24  23 
  6   3   3 

 78 
 90  86 
100  32  24  23 
  6   3   3 

sort i=3
100 
 90  86 
 78  32  24  23 
  6   3   3 

 86 
 90 100 
 78  32  24  23 
  6   3   3 

sort i=2
100 
 90  86 
 78  32  24  23 
  6   3   3 

 90 
100  86 
 78  32  24  23 
  6   3   3 

sort i=1
100 
 90  86 
 78  32  24  23 
  6   3   3 

100 
 90  86 
 78  32  24  23 
  6   3   3 

sorted:
100 
 90  86 
 78  32  24  23 
  6   3   3
加载中...