当前位置:首页
>
查试题
>
阅读以下说明和 C 代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】对一个整数序列进行快速排序的方法是:在待排序的整数序列中取第一个数作为基准值,然后根据基准值进行划分,从而将待排序列划分为不大于基准值者(称为左子序列)和大于基准值者(称为右子序列),然后再对左子序列和右子序列分别进行快速排序, 最终得到非递减的有序序列。函数 quicksort(int a[],int n)实现了快速排序,其中,n 个整数构成的待排序列保存在数组元素 a[0]-a[n-1]中。【C 代码】#include < stdio.h>void quicksort(int a[] ,int n){ int i ,j; int pivot = a[0]; //设置基准值 i =0; j = n-1; while (i< j) { while (i<j &&(1)) j-- //大于基准值者保持在原位置 if (i<j) { a[i]=a[j]; i++;} while (i<j &&(2)) i++; //不大于基准值者保持在原位置 if (i<j) { a[j]=a[i]; j--;} } a[i] = pivot; //基准元素归位 if ( i>1) (3) ; //递归地对左子序列进行快速排序 if ( n-i-1>1 ) (4) ; //递归地对右子序列进行快速排序}int main (){ int i,arr[ ] = {23,56,9,75,18,42,11,67}; quicksort ( (5) ); //调用 quicksort 对数组 arr[ ]进行排序 for( i=0; i<sizeof(arr) /sizeof(int); i++ ) printf(" %d " ,arr[i]) ; return 0;}