首页
试卷库
试题库
当前位置:
X题卡
>
所有题目
>
题目详情
设有n个结点进行排序,不稳定排序是 (1) ;快速排序的最坏时间是 (2) 。 (2)()
查看本题答案
包含此试题的试卷
初级程序员《单选题》真题及答案
点击查看
你可能感兴趣的试题
如果待排序序列中两个数据元素具有相同的值在排序后它们的位置发生颠倒则称该排序是不稳定的下列不稳定的排
冒泡排序
归并排序
直接插入排序
直接选择排序
从供选择的答案中选出应填入下列叙述中内的正确答案已知一棵二叉树的前序序列和中序序列分别为ABDEGC
Shell排序快速排序堆排序的稳定性如何3 若要尽可能的完成对实数数组的排序且要求排序是稳
Shell排序是稳定的
快速排序是稳定的
堆排序是稳定的
都不稳定
下列叙述中正确的是
堆排序是一种稳定的内部排序方法
在排序过程中,若出现元素向逆序向移动的现象,那么这样的排序是不稳定的
折半插入排序是一种稳定的内部排序方法
待排序列基本有序时选用快速排序,能够最好地发挥这种排序方法的优势
在最好和最坏情况下的时间复杂度均为Dnlogn但不稳定的排序算法是
堆排序
快速排序
归并排序
基数排序
在最好和最坏情况下的时间复杂度均为Onlogn但不稳定的排序算法是
堆排序
快速排序
归并排序
基数排序
以下关于快速排序算法的描述中错误的是104在快速排序过程中需要设立基准元素并划分序列来进行排序
快速排序算法是不稳定的排序算法
快速排序算法在最坏情况下的时间复杂度为O(nlgn)
快速排序算法是一种分治算法
当输入数据基本有序时,快速排序算法具有最坏情况下的时间复杂度
设有n个结点进行排序不稳定排序是1快速排序的最坏时间是2 1
直接插入排序
冒泡排序
希尔排序
归并排序
如果在待排序序列中有两个元素具有相同的值排序使它们的位置发生颠倒则称该排序算法是不稳定的下列哪种排序
堆排序
归并排序
基数排序
起泡排序
设有n个结点进行排序不稳定排序是1快速排序的最大比较次数是2 2
nlog
2
n
n
2
n
2
/2
n
内排序算法有很多种下列算法中哪种算法虽然快但却是不稳定的算法
冒泡排序
归并排序
线性插入排序
快速排序
在下列排序方法中不稳定的方法有
归并排序和基数排序
插入排序和希尔排序
堆排序和快速排序
选择排序和冒泡排序
Shell排序快速排序堆排序的稳定性如何58 若要尽可能的完成对实数数组的排序且要求排序是
Shell排序是稳定的
快速排序是稳定的
堆排序是稳定的
都不稳定
如果待排序序列中两个元素具有相同的值在排序前后它们的相互位置发生颠倒则称该排序算法是不稳定的是稳定的
冒泡排序
希尔排序
快速排序
简单选择排序
如果待排序序列中两个元素具有相同的值在排序前后它们的相互位置发生颠倒则称该排序算法是不稳定的____
冒泡排序
希尔排序
快速排序
简单选择排序
设有n个结点进行排序不稳定排序是1快速排序的最大比较次数是2 1
直接插入排序
冒泡排序
Shell排序
归并排序
如果待排序序列中两个数据元素具有相同的值在排序后它们的位置发生颠倒则称该排序是不稳定的下列不稳定的排
起泡排序
归并排序
直接插入排序
直接选择排序
在任何情况下时间复杂度均为Onlogn的不稳定的排序方法是
直接插入
快速排序
堆排序
归并排序
以下关于快速排序算法的描述中错误的是35在快速排序过程中需要设立基准元素并划分序列来进行排序若
快速排序算法是不稳定的排序算法
快速排序算法在最坏情况下的时间复杂度为O(log
2
n)
快速排序算法是一种分治算法
当输入数据基本有序时,快速排序算法具有最坏情况下的时间复杂度
Shell排序快速排序堆排序的稳定性如何31 若要尽可能的完成对实数数组的排序且要求排序是
Shell排序是稳定的
快速排序是稳定的
堆排序是稳定的
都不稳定
热门试题
更多
Oneofthegreatestfeaturesofahome______istheabilitytoshareoneInternetconnectionsimultaneouslyovertwoormorecomputers.
阅读以下说明和C程序填补空缺 [说明]下面的程序按照以下规则输出给定名词的复数形式 1若名词以y结尾则删除y并添加ies 2若名词以sch或sh结尾则添加es 3其他所有情况直接添加s[C程序] #include<stdio.h>#include<string.h>char *pluralchar*word{intn; char*pstr;n=strlenword; /*求给定单词的长度*/pstr=char*mallocn+3; /*申请给定单词的复数形式存储空间*/if!pstr||n<2return NULL;strcpypstrword;/*复制给定单词*/ if1{ pstr[n-1]=’i’;pstr[n]=’e’;pstr[n+1]=’s’;2; }else ifpstr[n-1]==’s’||pstr[n-1]==’h’&&3 {pstr[n]=’e’;pstr[n+1]=’s’; pstr[n+2]=’/0’;}else {pstr[n]=’s’;pstr[n+1]=’/0’;}4; }main{ inti;char*ps;charwc[9][10]= {chairdairybosscircusflydogchurchclue dish;fori=0;i<9;i++{ps= 5;printf%s:%s/nwc[i]ps; /*输出单词及其复数形式*/freeps; /*释放空间*/}systempause; }
TheusualaddressforaWebsiteisthe______pageaddressalthoughyoucanentertheaddressofanypageandhavethatpagesenttoyou.
设栈S初始状态为空元素abcdef依次通过栈S若出栈的顺序为cfedba则栈S的容量至少应该为______
一个栈的输入序列为123n若输出序列的第一个元素是n输出第i1≤i≤n个元素是______
假设一棵二叉树的后序遍历序列为DGJHEBIFCA中序遍历序列为DBGEHJACIF则其前序遍历序列为
Oneofthebasicrulesofcomputersecurityistochangeyour______regularly.
Todocumentyourcodecanincreaseprogram 2andmakeprogrameasierto3 .
阅读以下说明和C语言函数填补空缺 [说明]函数countmonthsDATEstartDATE end的功能是计算两个给定日期之间所包含的完整月份数 该函数先算出起止日期中所含的完整年数再计算余下的完整月份数 规定两个相邻年份的同月同日之间的问隔为1年例如2007.5.30—2008.5.30的间隔为1年若相邻两年中前一年是闰年并且日期是2月29日则到下一年的2月28日为1年即2008.2.29—2009.2.28的间隔为1年 规定两个相邻月份的相同日之间的间隔为1个月但需要特别考虑月末的特殊情况例如2007.1.29—2007.2.28的间隔为1个月同理2007.1.30—2007.2.282007.1.31—2007.2.28的间隔都是1个月 计算起止日期间隔不足一年的完整月份数时分两种情况 1起止日期不跨年度先用终止日期的月号减去起始日期的月号得到月份数然后再根据情况进行修正例如起止日期为2008.3.31—2008.9.20通过月号算出月份数为6修正时通过调用函数makevalid将2008.9.31改为2008.9.30与终止日期2008.9.20比较后将月份数修正为5 2起止日期跨年度计算方法如下例所示对于起止日期2008.7.25—2009.3.31先计算2008.7.25—2008.12.25的月份数为5再算出2008.12.25—2009.3.25的月份数为3因此2008.7.25—2009.3.31之间的完整月份数为8 日期数据类型定义如下typedefstruct{ intyear;intmonth;intday;/*日期的年号4位月和日号*/}DATE; 程序中使用的函数cmp_dateisLeapYear 和makevalid说明如表11-8所示 表11-8函数说明 函数名 参数 返回值 说明 cmp_date DATEstart DATEend -1start<end 0start=end 1start>end 比较两个日期的大小例如 2007.1.30小于2007.5.15 2008.11.23等于2008.11.23 2008.1.31大于2007.5.15 isLeapYear intyear 1year表示的年号是闰年 0year表示的年号不是闰年 判断给定年号是否为闰年 makevalid DATE*r 无 若日期*r是非法的即*r不是闰年时其日期为2月29日或者其46911等月份出现了31日则将其日期改为当月最后 [C语言函数]intcount_monthsDATEstartDATEend {intyears=0months=0; DATEr;ifcmp_datestartend>0{ r=start;start=end;end=r; }years=end.year-start.year; /*计算年数*/r=start; r.year=end.year;ifcmp_daterend>0{ /*修正年数*/1; r.year--;} ifr.year<end.year{/*跨年度时先计算到12月的月份数*/ months=2; r.month=12;} months+=end.month+12-r.month%12;r. year=end.year;r.month=end.month;makeva!id 3;/*将日期r修正为有效日期*/ ifcmp_daterend>0/*修正月份数*/ 4;months+=5 ;/*计算总月份数*/returnmonths; }
A______systemplacedbetweenthecompanynetworkandtheoutsideworldmaylimitoutsideaccesstotheinternalnetwork.
In______theonlyelementthatcanbedeletedorremovedistheonethatwasinsertedmostrecently.
______softwarealsocalledend-userprogramincludesdatabaseprogramswordprocessorsspreadsheetsetc.
A______isafunctionalunitthatinterpretsandcarriesoutinstructions.
Asanoperatingsystemrepeatedlyallocatesandfreesstoragespacemanyphysicallyseparatedunusedareasappear.Thisphenomenoniscalled______.
【说明】 实现矩阵3行3列的转置即行列互换 例如输入下面的矩阵 100200300 400500600 700800900 程序输出 100400700 200500800 300600900 【函数】 intfunintarray[3][3] { intijt; fori=0;1;i++ forj=0;2;j++ { t=array[i][j]; 3; 4; } } } main { intij; intarray[3][3]={{100200300}{400500600}{700800900}}; clrscr; fori=0;i<3;i++ { forj=0;j<3;j++ printf%7darray[i][j]; printf/n; } fun5; printfConvertedarray:/n; fori=0;i<3;i++ { forj=0;j<3;j++ printf%7darray[i][j]; printf/n; } }
对于长度为n的线性表在最坏情况下下列各排序法所对应的比较次数中正确的是______
阅读以下说明和C函数代码回答问题 [说明]著名的菲波那契数列定义式为 f1=1f2=1fn=fn-1+fn-2n=34 因此从第1项开始的该数列为1123581321函数fib1和fib2分别用递归方式和迭代方式求解菲波那契数列的第n项调用fib1fib2时可确保参数n获得一个正整数1 [C函数代码]函数fib1fib2求得菲波那契数列第n项n>40的速度并不相同清指出速度慢的函数名并简要说明原因
阅读以下说明和C语言函数填补空缺 [说明]函数countmonthsDATEstartDATE end的功能是计算两个给定日期之间所包含的完整月份数 该函数先算出起止日期中所含的完整年数再计算余下的完整月份数 规定两个相邻年份的同月同日之间的问隔为1年例如2007.5.30—2008.5.30的间隔为1年若相邻两年中前一年是闰年并且日期是2月29日则到下一年的2月28日为1年即2008.2.29—2009.2.28的间隔为1年 规定两个相邻月份的相同日之间的间隔为1个月但需要特别考虑月末的特殊情况例如2007.1.29—2007.2.28的间隔为1个月同理2007.1.30—2007.2.282007.1.31—2007.2.28的间隔都是1个月 计算起止日期间隔不足一年的完整月份数时分两种情况 1起止日期不跨年度先用终止日期的月号减去起始日期的月号得到月份数然后再根据情况进行修正例如起止日期为2008.3.31—2008.9.20通过月号算出月份数为6修正时通过调用函数makevalid将2008.9.31改为2008.9.30与终止日期2008.9.20比较后将月份数修正为5 2起止日期跨年度计算方法如下例所示对于起止日期2008.7.25—2009.3.31先计算2008.7.25—2008.12.25的月份数为5再算出2008.12.25—2009.3.25的月份数为3因此2008.7.25—2009.3.31之间的完整月份数为8 日期数据类型定义如下typedefstruct{ intyear;intmonth;intday;/*日期的年号4位月和日号*/}DATE; 程序中使用的函数cmp_dateisLeapYear 和makevalid说明如表11-8所示 表11-8函数说明 函数名 参数 返回值 说明 cmp_date DATEstart DATEend -1start<end 0start=end 1start>end 比较两个日期的大小例如 2007.1.30小于2007.5.15 2008.11.23等于2008.11.23 2008.1.31大于2007.5.15 isLeapYear intyear 1year表示的年号是闰年 0year表示的年号不是闰年 判断给定年号是否为闰年 makevalid DATE*r 无 若日期*r是非法的即*r不是闰年时其日期为2月29日或者其46911等月份出现了31日则将其日期改为当月最后 [C语言函数]intcount_monthsDATEstartDATEend {intyears=0months=0; DATEr;ifcmp_datestartend>0{ r=start;start=end;end=r; }years=end.year-start.year; /*计算年数*/r=start; r.year=end.year;ifcmp_daterend>0{ /*修正年数*/1; r.year--;} ifr.year<end.year{/*跨年度时先计算到12月的月份数*/ months=2; r.month=12;} months+=end.month+12-r.month%12;r. year=end.year;r.month=end.month;makeva!id 3;/*将日期r修正为有效日期*/ ifcmp_daterend>0/*修正月份数*/ 4;months+=5 ;/*计算总月份数*/returnmonths; }
阅读以下说明和C语言程序填补空缺 [说明] 某电信公司记录了每个用户的详细通话情况每次通话数据记录在一行现将某用户某月的通话数据存入一个文本文件dial.txt中其数据格式如下 拨入或拨出标记通话开始时间通话结束时间对方号码注1数据字段以一个空格作为分隔符 注2拨入和拨出标记均为小写字母拨入标记为i表示其他用户呼叫本机本机用户不需付费拨出标记为o表示本机呼叫其他用户此时本机用户需要付费 注3通话开始和结束时间的格式均为HH:MM:SS其中HH表示小时取值00~23MM表示分钟取值00~59SS表示秒取值00~59从通话开始到结束这段时间称为通话时间假定每次通话时间以秒为单位最短为1秒最长不超过24小时 注4跨月的通话记录计入下个月的通话数据文件例如o23:01:12 00:12:15表示本次通话是本机呼叫其他用户时间从23时01分12秒至次日的0时12分15秒通话时间为71分03秒 下面程序的功能是计算并输出该用户本月电话费单位元通话计费规则为 1月通话费按每次通话费累加 2每次的通话费按通话时间每分钟0.08元计算不足1分钟时按1分钟计费 对于每次的拨出通话程序中先分别计算出通话开始和结束时间相对于当日0点0分0秒的时间长度以秒为单位然后算出本次通话时间和通话费 例如若输入文件dial.txt的数据如下所示则输出fee=7.44o14:05:2314:11:25 82346789i15:10:0016:01:1513890000000o 10:53:1211:07:0563000123o23:01:1200:12:15 13356789001[C语句程序代码] #include<stdio.h>FILE*fin;intmain {charstr[80]; inth1h2m1m2s1s2;longt_start t_endinterval;intc;double fee=0;fin=fopendial.txtrj; if!finreturn-1; while!feoffin{if!fgetsstr80fin break;if1 continue;h1=str[2]-48*10+str[3]-48; m1=str[5]-48*10+str[6]-48; s1=str[8]-48*10+str[9]-48;h2=str[11]-48*10+str[12]-48; m2=str[14]-48*10+str[15]-48; s2=str[17]-48*10+str[18]-48; t_start=h1*60*60+m1*60+s1;/*通话开始时间*/ t_end=h2*60*60+m2*60+s2/*通话结束时间*/if 2/*若通话开始和结束时间跨日*/ interval=3-t_start+t_end; elseinterval=t_end-t_start; c=4; /*计算完整分钟数表示的通话时间*/ifinterval%60 5; fee+=c*0.08;}fclosefin; printffee=%.21f/nfee; return0;}
n个元素依次全部进入栈后再陆续出栈并经过一个队列输出那么______
【说明】 本程序根据输入的月份数输出它是哪个季节 【代码】 importjava.io.*; publicclassseason { publicstaticvoidmainString[]args { Stringstrln=; 1in=newInputStreamReaderSystem.in; BufferedReaderbuffln=newBufferedReaderin; System.out.printPleaseenteramonth1-12:; try { strln=buffln.readLine;//从命令行读入数据 }catch2 { System.out.printlne.toStdng; } intmonth=3strln;//将字符串转换成整数型 intseason=0; ifmonth<12&&month>0 eseason=month+10%12/3+1;//计算季节的公式 4season { case1: System.out.printlntheseasonisSpringl; break; case2: System.out.printlntheseasonisSummer!; case3: System.out.printlntheseasonisFall!; case4: System.out.printlntheseasonisWinter!; break; 5; System.out.printlnthisisnotcorrectmonth!; } } }
阅读以下说明和C函数代码回答问题 [说明]著名的菲波那契数列定义式为 f1=1f2=1fn=fn-1+fn-2n=34 因此从第1项开始的该数列为1123581321函数fib1和fib2分别用递归方式和迭代方式求解菲波那契数列的第n项调用fib1fib2时可确保参数n获得一个正整数1 [C函数代码]函数fib1和fib2存在错误只需分别修改其中的一行代码即可改正错误 1函数fib1不能通过编译请写出fib1中错误所在行修改正确后的完整代码 2函数fib2在n≤2时不能获得正确结果请写出fib2中错误所在行修改正确后的完整代码
以下数据结构中属于线性数据结构的是______
若pushpop分别表示入栈出栈操作初始栈为空且元素123依次进栈则经过操作序列pushpushpoppoppushpop之后得到的出栈序列为______
【说明】 已知某数列的前两项为2和3其后继项根据当前最后两项的乘积按下列规则生成 1若乘积为一位数则该乘积即为数列的后继项 2若乘积为二位数则该乘积的十位数和个位数依次作为数列的两个后继项 本程序输出该数列的前n项以及它们的和其中函数sumnpa返回数列的前n项之和并将生成的前n项存放于首指针为pa的数组中程序中规定输入的n值必须大于2并且不超过给定的常数值MAXNUM 例如若输入n值为10则程序输出如下内容 sum10=44 2361886424 #include<stdio.h> #defineMAXNUM100 intsumintnint*pa{ intcounttotaltemp; *pa=2; 1=3; total=5;count=2; whilecount++<n{ temp+=*pa-1**pa; iftemp<10{ total+=temp; *++pa=temp; } else{ 2=temp/10; total+=*pa; ifcount<n{ count++;pa++; 3=temp%10; total+=*pa; } } } 4; } main{ intn*p*qnum[MAXNUM]; do{ printfInputN=2<N<%d:MAXNUM+1; scanf%d&n; }while5; printf/nsum%d=%d/nnsumnnum; forp=numq=6;p<q;p++printf%4d*p; printf/n; }
已知N个数已存入数组A[1..M]的前N个元素中N<M为在A[i]1≤i≤N之前插入一个新数应先以挪出一个空闲位置插入该数
对长度为n的线性表进行顺序查找在最坏情况下所需要的比较次数为
阅读以下说明和C程序填补空缺 [说明]下面的程序按照以下规则输出给定名词的复数形式 1若名词以y结尾则删除y并添加ies 2若名词以sch或sh结尾则添加es 3其他所有情况直接添加s[C程序] #include<stdio.h>#include<string.h>char *pluralchar*word{intn; char*pstr;n=strlenword; /*求给定单词的长度*/pstr=char*mallocn+3; /*申请给定单词的复数形式存储空间*/if!pstr||n<2return NULL;strcpypstrword;/*复制给定单词*/ if1{ pstr[n-1]=’i’;pstr[n]=’e’;pstr[n+1]=’s’;2; }else ifpstr[n-1]==’s’||pstr[n-1]==’h’&&3 {pstr[n]=’e’;pstr[n+1]=’s’; pstr[n+2]=’/0’;}else {pstr[n]=’s’;pstr[n+1]=’/0’;}4; }main{ inti;char*ps;charwc[9][10]= {chairdairybosscircusflydogchurchclue dish;fori=0;i<9;i++{ps= 5;printf%s:%s/nwc[i]ps; /*输出单词及其复数形式*/freeps; /*释放空间*/}systempause; }
阅读以下说明和C程序填补空缺 [说明]下面的程序按照以下规则输出给定名词的复数形式 1若名词以y结尾则删除y并添加ies 2若名词以sch或sh结尾则添加es 3其他所有情况直接添加s[C程序] #include<stdio.h>#include<string.h>char *pluralchar*word{intn; char*pstr;n=strlenword; /*求给定单词的长度*/pstr=char*mallocn+3; /*申请给定单词的复数形式存储空间*/if!pstr||n<2return NULL;strcpypstrword;/*复制给定单词*/ if1{ pstr[n-1]=’i’;pstr[n]=’e’;pstr[n+1]=’s’;2; }else ifpstr[n-1]==’s’||pstr[n-1]==’h’&&3 {pstr[n]=’e’;pstr[n+1]=’s’; pstr[n+2]=’/0’;}else {pstr[n]=’s’;pstr[n+1]=’/0’;}4; }main{ inti;char*ps;charwc[9][10]= {chairdairybosscircusflydogchurchclue dish;fori=0;i<9;i++{ps= 5;printf%s:%s/nwc[i]ps; /*输出单词及其复数形式*/freeps; /*释放空间*/}systempause; }
Thelineofcomputingjobswaitingtoberunonacomputersystemmightbea______.Thejobsareservicedintheorderoftheirarrivalthatisthefirstinisthefirstout.
热门题库
更多
中级软件设计师
初级网络管理员
初级信息处理技术员
中级数据库系统工程师
中级多媒体应用设计师
高级系统分析师
高级网络规划设计师
高级系统架构师
中级信息系统监理师
初级通信工程师
中级通信工程师
通信新技术、新业务知识
无线通信专业技术
移动通信专业技术
有线传输专业技术
电话交换专业技术