早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

阅读下列C程序和程序说明,将应填入(n)处的字句写在对应栏内。 【说明】下面是一个用C编写的快速排序

题目

阅读下列C程序和程序说明,将应填入(n)处的字句写在对应栏内。

【说明】下面是一个用C编写的快速排序算法。为了避免最坏情况,取基准记录pivot时,采用从left、right和mid=[(left+right)/2]中取中间值,并交换到right位置的办法。数组a存放待排序的一组记录,数据类型为T,left和right是待排序子区间的最左端点和最右端点。

void quicksort (int a[], int left, int right) {

int temp;

if (left<right) {

hat pivot = median3 (a, left, right); //三者取中子程序

int i = left, j = right-1;

for(;;){

while (i <j && a[i] < pivot) i++;

while (i <j && pivot < a[j]) j--;

if(i<j){

temp = a[i]; a[j] = a[i]; a[i] = temp;

i++; j--;

}

else break;

}

if (a[i] > pivot)

{temp = a[i]; a[i] = a[right]; a[right] = temp;}

quicksort( (1) ); //递归排序左子区间

quieksort(a,i+1 ,right); //递归排序右子区间

}

}

void median3 (int a[], int left, int right)

{ int mid=(2);

int k = left;

if(a[mid] < a[k])k = mid;

if(a[high] < a[k]) k = high; //选最小记录

int temp = a[k]; a[k] = a[left]; a[left] = temp; //最小者交换到 left

if(a[mid] < a[right])

{temp=a[mid]; a[mid]=a[right]; a[right]=temp;}

}

消去第二个递归调用 quicksort (a,i+1,right)。 采用循环的办法:

void quicksort (int a[], int left, int right) {

int temp; int i,j;

(3) {

int pivot = median3(a, left, right); //三者取中子程序

i = left; j = righi-1;

for (;; ){

while (i<j && a[i] < pivot)i++;

while (i<j && pivot <a[j]) j--;

if(i <j) {

temp = a[i]; a[j]; = a[i]; a[i]=temp;

i++; j--;

}

else break;

}

if(a[i]>pivot){(4);a[i]=pivot;}

quicksoft ((5)); //递归排序左子区间

left = i+1;

}

}

参考答案
正确答案:(1)alefti-1 (2)(left+right+1)/2 (3)while(leftright) (4)a[right)=a[i] (5)aleft i-1
(1)a,left,i-1 (2)(left+right+1)/2 (3)while(leftright) (4)a[right)=a[i] (5)a,left, i-1 解析:(1)a,left,i-1
递归排序左子区间,从left到i-1元素,不包括i元素。
(2)(left+right+1)/2
三者取中子程序median3(a,left,right),取基准记录pivot时,采用从left、right和 mid=[(left+right)/2]中取中间值,并交换到right位置的办法。
(3)while(leftright)
循环直到left和right相遇。
(4)a[right)=a[i]
若a[i]>pivot则让a[right]=a[i]而让a[i]=pivot;。
(5)a,left, i-1
递归排序左子区间,从left到i-1元素,不包括i元素。
看了阅读下列C程序和程序说明,将应...的网友还看了以下:

汉语拼音大写字母按顺序的读音及写法要手写体哦,有一个大写的拼音,挨着一个小写的拼音,读法用汉字描述 语文 2020-05-16 …

阅读以下应用程序说明和C程序,将C程序段中(1)~(7)空缺处的语句填写完整。[说明] 以下[C程序 计算机类考试 2020-05-26 …

阅读下列C程序和程序说明,将应填入(n)处的字句写在对应栏内。 【说明】 本程序在3×3方格中填入1 计算机类考试 2020-05-26 …

阅读下列C程序和程序说明,将应填入(n)处的字句写在对应栏内。 【说明】下面是一个用C编写的快速排序 计算机类考试 2020-05-26 …

A.只读B.可读可写C.不同的数据库不同D.以上均不对 计算机类考试 2020-05-26 …

阅读下列C程序和程序说明,将应填入(n)处的字句写在对应栏内。 【说明】本程序从正文文件text.i 计算机类考试 2020-05-26 …

阅读下列C++程序和程序说明,将应填入(n)处的字句写在对应栏内。【说明】[程序6说明]单源最短路径 计算机类考试 2020-05-26 …

填空:1、在读多位数时,应从()位读起,按照()顺序读.2、在写多位数时,应从()位写起,按照() 数学 2020-07-21 …

编程题求答案阅读下列程序,写出程序运行结果:程序清单C=”ABCDEF”FORi=1TO6?ASC( 其他 2020-11-28 …

下列关于顺序文件的描述,错误的是().A、\x05顺序文件可以用字符型变量进行书写B、\x05顺序文 其他 2020-12-14 …