更多"若需在O(nlog
2
n)的时间内完成对数组的排序,且要求排序是"的相关试题:
[单项选择]
Shell排序、快速排序、堆排序的稳定性如何 (3) 。
若要尽可能的完成对实数数组的排序,且要求排序是稳定的,则应选 (4) 。
若用插入排序算法对n个记录进行排序,最佳情况下,对关键字进行的比较次数为 (5) 。
对于多关键字而言, (6) 是一种方便而又高效的文件组织方式。
若用冒泡排序对关键字序列19,16,11,8,5,3从小到大进行排序,则需要次数为 (7) 。
3()
A. Shell排序是稳定的
B. 快速排序是稳定的
C. 堆排序是稳定的
D. 都不稳定
[简答题]请完成下列Java程序:建立一个String类型的数组,实现该数组的自然排序,并输出结果。该数组采用直接初始化,大小不限。(提示;使用Collations接口。)
注意:请勿改动main( )主方法和其他已有语句内容,仅在下划线处填入适当的语句。
程序运行结果如下:
fang
liu
ouyang
sun
wll
zhang
import java.util.*;
public class ex5_2
public static void main(String[]args)
Vector vName=new Vector( );
String[]strName="zhang","sun","wu","liu","fang","ouyang";
for(int i=0;i<strName.length;i++)
________;
________;
for(int j=0;j<vName.size( );i++)
System.out.println(vName.get(j));
[简答题]简单应用题
请完成下列Java程序:建立一个String类型的数组,实现该数组的自然排序,并输出结果。该数组采用直接初始化,大小不限。(提示:使用Collections接口。)
注意:请勿改动main( )主方法和其他已有语句内容,仅在下划线处填入适当的语句。
程序运行结果如下:
fang
liu
ouyang
sun
wu
zhang
import java.util.*;
public class ex5_2 {
public static void main(String[] args) {
Vector vName=new Vector( );
String[] strName={"zhang","sun","wu","liu","fang","ouyang"};
for(int i=0;i
[单项选择]快速排序算法在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于等于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了(1)算法设计策略。已知确定基准元素操作的时间复杂度为Θ(n),则快速排序算法的最好和最坏情况下的时间复杂度为(2)。空白(1)处应选择()
A. 分治
B. 动态规划
C. 贪心
D. 回溯
[填空题]附加段中有一个未排序的数组,数组中的第一个元素是该数组的长度。要删除数组中与数据段中X相同的元素,程序如下。填写空格处使程序完整,并回答程序后的问题。空白6处要填写的指令是 【6】 。 DSEG SEGMENT X DW 33 DSEG ENDS ESEG SEGMENT ARR DW 6,45,2l,68,33,87,74 ESEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,ES:ESEG MAIN PROC FAR START: PUSH DS XOR AX,AX PUSH AX MOV AX,DSEG MOV DS,AX MOV AX,ESEG MOV ES,ESEG MOV AX,X LEA DI,ARR 【6】
RET MAIN ENDP DEL PROC NEAR 【7】
PUSH DI MOV CX,ES:[DI] ADD DI,2 REPNE SCASW JE DELETE POP DI JMP EXIT DALETE:// JCXZ LAST AGAIN: MOV BX,ES:[DI] MOV ES:[DI-2],BX ADD DI,2 LOOP AGAIN LAST: POP DI DEC WORD PTR ES:[DI] EXIT: RET CSEG ENDS END START
[简答题]有一种简单的排序算法,叫做计数排序(CountSorting)。这种排序算法对一个待排序的表(用数组表示)进行排序,并将排序结果存放到另一个新的表中。必须注意的是,表中所有待排序的关键码互不相同,计数排序算法针对表中的每个记录,扫描待排序的表一趟,统计表中有多少个记录的关键码比该记录的关键码小,假设针对某一个记录,统计出的计数值为c,那么,这个记录在新的有序表中的合适的存放位置即为C。给出适用于计数排序的数据表定义。
[填空题]有一个已排好序的数组,今输入一个数,要求按原来的顺序规律将它插入到数组中。算法是:假设排序顺序是从小到大,对输入的数,检查它在数组中哪个数之后,然后将比这个数大的数顺序后移一个位置,在空出的位置上将该数插入。请在程序中的空白处填上一条语句或一个表达式。
#define N 100
main( )
float a[N+1],x;
int i,p;
for(i=0;i<N;i++)
scanf("%f"&a[i]);
scanf("%f",&x);
for(i=0,p=N;i<N;i++)
if(x<a[i])
【18】 ;
break;
for(i=N-1; 【19】 ;i-)
a[i+1]=a[i];
a[p]=x;
for(i=0; 【20】 ;i++)
printf("%8.2f",a[i]);
if(i%5=0)
printf("/n");
[单项选择]选择排序和归并排序稳定性分别是______。
A. 都稳定
B. 稳定,不稳定,
C. 不稳定,稳定
D. 都不稳定
[填空题]请补充main函数,该函数的功能是:把一个整数插入到一个已经按从小到大排序的数组中。插入后,数组仍然有序。
例如,在数组bb[N]=12,23,31,44,51,63,71,79,85,95中插入93,结果为:
bb[N]11,21,31,41,51,61,7l,79,8l,93,95
注意:部分源程序给出如下.
请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include<std/o. h>
#define N 10
main( )
int i,j;
int n;
int bb IN+l] = t2,23, 31, 44, 51, 63, 71,
79,85,95;
clrscr ( );
printf("/nInput n /n");
scanf ("%d", &n);
printf ("/nn=%d ",n);
printf("/n*** original list ***In");
for (i=0; i<N; i++)
printf ("%4d ",bb [ii );
for (i=0; i<N; i++)
if (n<=bb [i ] )
for(j=N; 【1】 ;j--)
【2】;
bb [j] =n;
【3】;
if (i=N)
bb[i]=n;
printf("/n***** new list ******In");
for (i=0;i<N+l; i++)
printf ("%4d ",bb [i]);
[填空题][说明]
假设数组A中的各元素A(1),A(2),…,A(M)已经按从小到大排序(M≥1);数组B中的各元素B(1),B(2),…,B(N)也已经按从小到大排序(N≥1)。执行下面的流程图后,可以将数组A与数组B中所有的元素全都存入数组C中,且按从小到大排序(注意:序列中相同的数全部保留并不计排列顺序)。例如,设数组A中有元素:2,5,6,7,9;数组B中有元素2,3,4,7;则数组C中将有元素:2,2,3,4,5,6,7,7,9。
[流程图]
本题流程图如图8-31所示。