如果只想得到一个关键字序列中第k个最小元素之前的排序序列,最好采用()排序方法。如果有这样的一个序列(57,40,38,11,13,34,48,75,25,6,19,9,7),得到第4个最小元素之前的部分序列(6,7,9,11),使用所选择的算法实现时,要执行()次比较。
如果只想得到一个关键字序列中第k个最小元素之前的排序序列,最好采用()排序方法。如果只想得到一个关键字序列中第k个最小元素之前的排序序列,最好采用 (53) 排序方法。如果有这样的一个序列(57,40,38,11,13,34,48,75,25,6,19,9,7),得到第4个最小元素之前的部分序列(6,7,9,11),使用所选择的算法实现时,要执行 (54) 次比较。
(53)处填()。 下列程序的功能是:将一个正整数序列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( )的内容。
[试题源程序]
#include<stdio.h>
void jsValue(int a[10][9])
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;i<10;i++)
for(j=0; j<9;j++)
printf("%d",a[i][j]);
if(j<=7)printf(",");
printf("/n");
writeDat(a);
我来回答: