刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
[说明]
对一个整数序列进行快速排序的方法是:在待排序的整数序列中取第一个数作为基准值,然后根据基准值进行划分,从而将待排序列划分为不大于基准值者(称为左子序列)和大于基准值者(称为右子序列),然后再对左子序列和右子序列分别进行快速排序,最终得到非递减的有序序列。
函数quicksort(int a[],int n)实现了快速排序,其中,n个整数构成的待排序列保存在数组元素a[0]~a[n-1]中。

[C代码]

    #inclLade<stdi0.h>

    void quicksort(int
a[],  int n)

    {

    int i,j;

    int pivot=a[0];
   //设置基准值

    i=0;  j=n-1;

    while (i<j){

    while (i<1 && ______)  j--;    //大于基准值者保持在原位置

    if  (i<j)  {  a[i]  =a[j];  i++;}

    while(i<j&& ______)  i++;    //不大于基准值者保持在原位置

    if  (i<1)  {  a[j]  =a[i];  1--;}

    }

    a[i]=pivot;  
 //基准元素归位

    if  (i>1  )

    ______;  
 //递归地对左孔序列进行快速排序

    if  (n-i-1>1  )

    ______;  
 //递归地对右孔序列进行快速排序

    }

    int main()

    {

    int i,  arr[]
={23,56,9,75,18,42,11,67};

    quicksort(______);
   //调用quicksort对数组arr[]进行排序

    for(  i=0;
 i<sizeof(arr)/sizeof(int);
 i++  )

  
 printf("%d\t",arr[i]);

    return 0;

    }

使用微信搜索喵呜刷题,轻松应对考试!

答案:

a[j]>pivot    或  a[j]>=pivot   或等价形式
a[i]<=pivot   或  a[i]<pivot    或等价形式
quicksort(a,i) 或  quicksort(a,j) 或等价形式
quicksort(a+i+1,n-i-1)  或  quicksort(a+j+1,n-j-1)  或等价形式
注:a+i+1可表示为&a[i+1],a+j+1可表示为&a[j+1]
arrsizeof(arr)/sizeof(int)
注:sizeof(arr)/sizeof(int)可替换为8

解析:

本题考查的是对快速排序算法的理解和C语言的编程技能。根据题目描述和给出的代码片段,我们需要对代码中的空缺部分进行填补。

  1. 在第一个空处,我们需要找到一个条件来判断一个数是否大于基准值,因此应该填写“a[j]>pivot”或等价形式如“a[j]>=pivot”。这个条件用于在划分过程中将大于基准值的元素保持在原位置。
  2. 在第二个空处,我们需要找到一个条件来判断一个数是否小于或等于基准值,因此应该填写“a[i]<=pivot”或等价形式如“a[i]<pivot”。这个条件用于在划分过程中将小于或等于基准值的元素保持在原位置。
  3. 在第三个空处,我们需要递归地对左子序列进行快速排序。根据快速排序的递归特性,应该填写“quicksort(a,i)”或等价形式如“quicksort(&a[0],i)”,这里的参数表示对左子序列进行排序。这里的&a[0]和a是等价的,都表示数组的起始地址。
  4. 在第四个空处,我们需要递归地对右子序列进行快速排序。同样根据快速排序的递归特性,应该填写“quicksort(a+i+1,n-i-1)”,这里的参数表示右子序列的起始地址和长度。
  5. 在第五个空处,我们需要在main函数中调用quicksort函数对数组arr进行排序。根据函数的定义和参数传递方式,应该填写“arr,sizeof(arr)/sizeof(int)”或等价形式来表示数组arr和它的元素个数。注意这里可以使用sizeof运算符来计算数组的元素个数。

综上,我们已经根据题目要求对代码中的空缺部分进行了填补,完成了对快速排序算法的C语言实现。

创作类型:
原创

本文链接:阅读以下说明和C代码,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]对一个整数序列进行快速排

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share