首页
登录
从业资格
阅读以下说明和代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】下面的
阅读以下说明和代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】下面的
考试题库
2022-08-02
26
问题
阅读以下说明和代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】下面的程序利用快速排序中划分的思想在整数序列中找出第 k 小的元素(即 将元素从小到大排序后,取第 k 个元素)。对一个整数序列进行快速排序的方法是:在待排序的整数序列中取第一个数 作为基准值,然后根据基准值进行划分,从而将待排序的序列划分为不大于基准 值者(称为左子序列)和大于基准值者(称为右子序列),然后再对左子序列和 右子序列分别进行快速排序,最终得到非递减的有序序列。例如,整数序列“19, 12, 30, 11,7,53, 78, 25"的第 3 小元素为 12。整数序列“19, 12,7,30, 11, 11,7,53. 78, 25, 7"的第 3 小元素为 7。函数 partition(int a[], int low,int high)以 a[low]的值为基准,对 a[low]、 a[low+l]、…、a[high]进行划分,最后将该基准值放入 a
(low≤i≤high),并 使得 a[low]、a[low+l]、,..、A[i-1]都小于或等于 a
,而 a[i+l]、a[i+2]、..、 a[high]都大于 a
。函 教 findkthElem(int a[],int startIdx,int endIdx,inr k) 在 a[startIdx] 、 a[startIdx+1]、...、a[endIdx]中找出第 k 小的元素。【代码】#include <stdio.h>#include <stdlib.h> Int partition(int a [],int low, int high){//对 a[low..high]进行划分,使得 a[low..i]中的元素都不大于 a[i+1..high]中的 元素。int pivot=a[low]; //pivot 表示基准元素 Int i=low,j=high;while(( 1) ){While(i<j&&a[ j]>pivot)--j; a
=a[ j] While(i<j&&a
>pivot)++i; a[ j]=a
}(2) ; //基准元素定位 return i;}Int findkthElem(int a[],int startIdx,int endIdx, int k){//整数序列存储在 a[startldx..endldx]中,查找并返回第 k 小的元素。if (startldx<0 ||endIdx<0 || startIdx>endIdx || k<1 ||k-l>endIdx||k-1<startIdx)Return-1; //参数错误 if(startIdx<endldx){int loc=partition(a, startIdx, endldx); ∥进行划分,确定基准元素的位置 if (loc==k-1) ∥找到第 k 小的元素return (3) ;if(k-l <loc)//继续在基准元素之前查找 return findkthElem(a, (4) ,k);else //继续在基准元素之后查找 return findkthElem(a, (5) ,k);}return a[startIdx]; }int main(){int i, k; int n;int a[] = {19, 12, 7, 30, 11, 11, 7, 53, 78, 25, 7}; n= sizeof(a)/sizeof(int) //计算序列中的元素个数 for (k=1;k<n+1;k++){for(i=0;i<n;i++){ printf(“%d/t”,a
);}printf(“\n”);printf(“elem %d=%d\n,k,findkthElem(a,0,n-1,k));//输出序列中第 k 小的元素}return 0;}
选项
答案
解析
1) CountStr
2) p
3) p
4) num 3、
1、!i=j
2、a
=pivot
3、a[loc]
4、stratIdx,Loc-1
5、Loc+1,endIdx
转载请注明原文地址:http://tihaiku.com/congyezige/2425910.html
本试题收录于:
初级程序员题库软件水平考试初中高级分类
初级程序员
软件水平考试初中高级
相关试题推荐
解答服务对象的健康问题,帮助其澄清观念、做出决策的人际传播形式称为A.咨询B.个
IE浏览器能够正确解析()代码。A.ASP B.HTML C.JSP D
在网页中创建一个如下图所示的表单控件的HTML代码是()。 A.<input
下面的XML代码段中,语法正确的是()。A.<!-xml示例-!><?xml
下列设置图像地图正确的HTML代码是()。A.<areashape="po
阅读以下说明,回答问题1至问题5,将解答填入答题纸对应的解答栏内。 【说明】
阅读以下说明,回答问题1至问题2,将解答填入答题纸对应的解答栏内。 【说明】
阅读以下说明,回答问题1至问题4,将答案填入答题纸对应的解答栏内。(注:此题为思
阅读下列说明信息,回答问题1至问题5。将答案填入答题纸对应的解答栏内。 【说明
阅读以下说明,回答问题1至问题5,将解答填入答题纸对应的解答栏内。 【说明】
随机试题
Whywasthemandispleased?[originaltext]M:Anita,Ineedsomehelpwiththepr
Thebestwaytodealwiththeannoyingco-workerscanbesummarizedas______.[b
______you______furtherproblemswithyourprinter,contactyourdealerforadvic
某写字楼建筑设计为一个集中式中央空调系统,房间采用风机盘管十新风系统方式,下列确
锌对儿童生长发育起重要作用,我国对7~11岁儿童锌的RN1是( )mg/dA.
女性,60岁,剑突下持续性疼痛6小时,寒战、高热伴黄疸,既往有类似发作史。查体:
下列关于大陆法系与英美法系的区别。表述不正确的是()A.大陆法系的正式渊源主要是
财政收支状况对货币供应量有重要的影响,如果财政出现结余,则货币供应量()。A.增
下列关于双代号时标网络计划的表述中,正确的有()。A.虚箭线只能垂直画 B
A.克雷白杆菌肺炎 B.金黄色葡萄球菌肺炎 C.病毒性肺炎 D.肺炎链球菌
最新回复
(
0
)