假定对元素序列(7, 3, 5, 9, 1, 12)进行堆排序,并且采用小根堆,则由初始数据构成的初始堆为()。A、 1, 3, 5, 7, 9, 12B、 1, 3, 5, 9, 7, 12C、 1, 5, 3, 7, 9, 12D、 1, 5, 3, 9, 12, 7
假定对元素序列(7, 3, 5, 9, 1, 12)进行堆排序,并且采用小根堆,则由初始数据构成的初始堆为()。
- A、 1, 3, 5, 7, 9, 12
- B、 1, 3, 5, 9, 7, 12
- C、 1, 5, 3, 7, 9, 12
- D、 1, 5, 3, 9, 12, 7
相关考题:
若一组记录的排序码为(7,9,3,5,1,2,10),则利用堆排序的方法建立的初始堆为()A.10,7,9,3,5,1,2B.10,9,7,5,1,2,3C.10,9,7,5,3,2,1D.10,9,7,3,2,1,5
阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。【说明】将一正整数序列{K1,K2,…,K9}重新排列成一个新的序列,新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面),最后调用writeDat()函数的新序列输出到文件out.dat中。在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。例:序列{6,8,9,1,2,5,4,7,3}经重排后成为{3,4,5,2,1,6,8,9,7}【函数】include < stdio. h >include < conio. h >void jsValue( int a [10] [9] ){ int i,j,k,n,temp;int b[9];for(i=0;i<10;i++){ temp=a[i] [0];k=8;n=0;for(j=8;j=0;j--){ if(temp < a[i] [j]) (1)=a[i][j];if(temp >a[i] [j]) (2)=a[i][j];if(temp =a[i] [j]) (3)= temp;}for(j=0;j<9;j++) a[i][j] =b[j];}}void main( )int a[10] [9] = {{6,8,9,1,2,5,4,7,3},{3,5,8,9,1,2,6,4,7},{8,2,1,9,3,5,4,6,7}, {3,5,1,2,9,8,6,7,4},{4,7,8,9,1,2,5,3,6}, {4,7,3,5,1,2,6,8,9},{9,1,3,5,8,6,2,4,7}, {2,6,1,9,8,3,5,7,4},{5,3,7,9,1,8,2,6,4}, {7,1,3,2,5,8,9,4,6}};int i,j;(4);for(i=0;i<10;i++) {for(j=0;j<9;j++) {printf("%d",a[i] [j] );if((5))printf(",");}printf(" \n" );}getch( );}
下列程序的功能是:将一个正整数序列{K1, K2,…, K9}重新排列成一个新的序列。在新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面)。要求编写函数jsValue()实现以上功能,最后调用函数writeDat(),将新序列输出到文件out.dat中。说明:程序中已给出了10个序列,每个序列中有9个正整数,并存入数组a[10][9] 中,分别求出这10个新序列。例如:序列{6, 8, 9, 1, 2, 5, 4, 7, 3}重排后为{3, 4, 5, 2, 1, 6, 8, 9, 7}。部分源程序已给出。请勿改动主函数main() 和写函数writeDat() 的内容。#includestdio.hvoid jsValue(int a[10][9]){ } void main(){ int a[10][9]={{6,8,9,1,2,5,4,7,3} {3,5,8,9,1,2,6,4,7} {8,2,1,9,3,5,4,6,7} {3,5,1,2,9,8,6,7,4} {4,7,8,9,1,2,5,3,6} {4,7,3,5,1,2,6,8,9} {9,1,3,5,8,6,2,4,7} {2,6,1,9,8,3,5,7,4} {5,3,7,9,1,8,2,6,4} {7,1,3,2,5,8,9,4,6} }; int i,j; jsValue(a); for(i=0;i10;i++){ for(j=0;j9;j++) { printf("%d",a[i][j]); if(j=7) printf(","); } printf("\n");}writeDat(a);}void writeDat(int a[10][9]){ FILE *fp; int i,j; fp=fopen("out.dat","w"); for(i=0;i10;i++){ for(j=0;j9;j++){ fprintf(fp,"%d",a[i][j]); if(j=7) fprintf(fp,","); } fprintf(fp,"\n");} fclose(fp);}
设有初始序列(8,5,2,12,7,1,6,10,9,3,4,11),排序后产生新序列(4,5,2, 3,7,1,6,8,9,10,12,11),问采用的是下列哪一个排序算法一趟扫描的结果?( )A.堆排序B.初始步长为4的希尔排序C.二路归并排序D.以8为分界元素的快速排序
对关键字序列(6,1,4,3,7,2,8,5)进行快速排序时,以第1个元素为基准的一次划分的结果为 ( )A.(5,1,4,3,6,2,8,7)B.(5,1,4,3,2,6,7,8)C.(5,1,4,3,2,6,8,7)D.(8,7,6,5,4,3,2,1)
● 假设有 8 个记录,它的初始关键字序列为{5,7,3,8,2,9,1,4},用冒泡排序对它进行排序,第5次排序结果为 (44) 。(44)A. 5,3,7,2,8,1,4,9B. 2,1,3,4,5,7,8,9C. 3,2,5,1,4,7,8,9D. 1,2,3,4,5,7,8,9
假定一个初始堆为(1, 5, 3, 9, 12, 7, 15, 10),则进行第一趟堆排序后得到的结果为()。A、 3, 5, 7, 9, 12, 10, 15, 1B、 3, 5, 9, 7, 12, 10, 15, 1C、 3, 7, 5, 9, 12, 10, 15, 1D、 3, 5, 7, 12, 9, 10, 15, 1
对下列四个序列进行快速排序,各以第一个元素为基准进行第一次划分,则在该次划分过程中需要移动元素次数最多的序列为()A、 1, 3, 5, 7, 9B、 9, 7, 5, 3, 1C、 5, 3, 1, 7, 9D、 5, 7, 9, 1, 3
F12L413柴油机的发火顺序是()。A、1-5-3-8-10-7-6-11-2-9-4-12B、1-8-5-10-3-7-6-11-2-9-4-12C、1-10-3-8-7-11-6-9-2-4-12-5D、1-8-5-10-7-3-6-11-2-9-4-12
单选题对下列四个序列进行快速排序,各以第一个元素为基准进行第一次划分,则在该次划分过程中需要移动元素次数最多的序列为()A 1, 3, 5, 7, 9B 9, 7, 5, 3, 1C 5, 3, 1, 7, 9D 5, 7, 9, 1, 3
单选题假定对元素序列(7, 3, 5, 9, 1, 12)进行堆排序,并且采用小根堆,则由初始数据构成的初始堆为()。A 1, 3, 5, 7, 9, 12B 1, 3, 5, 9, 7, 12C 1, 5, 3, 7, 9, 12D 1, 5, 3, 9, 12, 7
单选题假定一个初始堆为(1, 5, 3, 9, 12, 7, 15, 10),则进行第一趟堆排序后得到的结果为()。A 3, 5, 7, 9, 12, 10, 15, 1B 3, 5, 9, 7, 12, 10, 15, 1C 3, 7, 5, 9, 12, 10, 15, 1D 3, 5, 7, 12, 9, 10, 15, 1
单选题元素1,3,5,7按顺序依次进栈,则该栈的不可能输出序列是()(进栈出栈可以交替进行)。A7,5,3,1B7,5,1,3C3,1,7,5D1,3,5,7