女装网站模板,青岛开发区网站,wordpress 评论 设置,嵌入式软件开发岗位职责description
本题要求实现堆排序中的筛选函数#xff0c;待排序列的长度1n1000。
函数接口定义#xff1a; void HeapAdjust( HeapType H, int s, int m); 其中L是待排序表#xff0c;使排序后的数据从小到大排列。 ###类型定义#xff1a;
typedef int KeyType…description
本题要求实现堆排序中的筛选函数待排序列的长度1n1000。
函数接口定义 void HeapAdjust( HeapType H, int s, int m); 其中L是待排序表使排序后的数据从小到大排列。 ###类型定义
typedef int KeyType; typedef struct { KeyType *elem; /elem[0]一般作哨兵或缓冲区/ int Length; }SqList; typedef SqList HeapType; 裁判测试程序样例 #includestdio.h #includestdlib.h typedef int KeyType; typedef struct { 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(i1;iL.Length;i) { printf(%d ,L.elem[i]); } return 0; } void HeapSort( HeapType H) { /堆顺序表H进行堆排序/ int i; KeyType rc; /建立初始堆/ for( iH.Length/2;i0; i–) { HeapAdjust(H, i, H.Length); } for(iH.Length;i1;i–) { rcH.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
solution
void HeapAdjust( HeapType H, int s, int m){int temp H.elem[s];for(int i s*2; i m; i * 2){if(i m H.elem[i] H.elem[i1]) i;if(temp H.elem[i]) break;H.elem[s] H.elem[i];s i;}H.elem[s] temp;
}