PTA 6 | 您所在的位置:网站首页 › 实现从小到大排序的函数 › PTA 6 |
本题要求实现堆排序中的筛选函数,待排序列的长度1 KeyType *elem; /*elem[0]一般作哨兵或缓冲区*/ int Length; }SqList; typedef SqList HeapType; void CreatSqListHeapType *L);/*待排序列建立,由裁判实现,细节不表*/ void HeapAdjust( HeapType H, int s, int m); void HeapSort( HeapType H); int main() { HeapType L; int i; CreatSqList(&L); HeapSort(L); for(i=1;i /*堆顺序表H进行堆排序*/ int i; KeyType rc; /*建立初始堆*/ for( i=H.Length/2;i>0; i--) { HeapAdjust(H, i, H.Length); } for(i=H.Length;i>1;i--) { rc=H.elem[1]; H.elem[1]=H.elem[i]; H.elem[i]=rc; HeapAdjust(H, 1, i-1); } } /*你的代码将被嵌在这里 */ 输入样例: 第一行整数表示参与排序的关键字个数。第二行是关键字值 例如: 10 5 2 4 1 8 9 10 12 3 6 输出样例:输出由小到大的有序序列,每一个关键字之间由空格隔开,最后一个关键字后有一个空格。 1 2 3 4 5 6 8 9 10 12 实现代码: void HeapAdjust( HeapType H, int s, int m){ //假设r[s+1..m]已经是堆,将r[s..m]调整为以r[s]为根的大根堆 KeyType rc; int j; rc=H.elem[s]; for(j=2*s;j |
CopyRight 2018-2019 实验室设备网 版权所有 |