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

阅读下列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-04-05 …

列各种人的性格特点,用 三字格 成语写出来 列各种人的性格特点,用 三字格 成语写随声附和的人,用 语文 2020-04-05 …

下图是化学实验中常用的几种装置.请回答下列问题:(1)写出用A装置制取氧气的反应的文字表达式.(2 化学 2020-05-13 …

书写时如何区分,9和q和和g,主要是9和q,写起来差不多,把9写得和q不同些又写成了g,最近数学学 语文 2020-05-16 …

用一句话描写下列写作内容他家庭贫寒,幼年丧父,从小开始工作养家,当过领航员和记者要求一句话完成,从 英语 2020-06-05 …

下列诗词句全是写景的,从实写和虚写的角度来看,不同的是A.寒蝉凄切,对长亭晚,骤雨初歇B.青冥浩荡 语文 2020-06-12 …

阅读下列材料:在我国的造纸术外传之前,朝鲜、日本用简和帛写字,印度用白树皮和棕榈叶写字,埃及用,欧 历史 2020-06-16 …

excel,写公式,如下所述在A列和B为给出数据,即2.65对应着80,0.265对应着6,根据这 其他 2020-07-23 …

C#编写斐波纳契数列,内有具体要求!斐波纳契数列中的头两个数是1和1,从第三个数开始,每个数等于前 其他 2020-07-23 …

已知:有机物E和F可用作塑料增塑剂或涂料的溶剂,它们的相对分子质量相等,可以用下列方法合成。(1) 化学 2020-07-26 …