閱讀以下說明和 C 代碼,填補(bǔ)代碼中的空缺,將解答填入答題紙的對應(yīng)欄內(nèi)。
【說明】
對一個(gè)整數(shù)序列進(jìn)行快速排序的方法是:在待排序的整數(shù)序列中取第一個(gè)數(shù)作為基準(zhǔn)值,然后根據(jù)基準(zhǔn)值進(jìn)行劃分,從而將待排序列劃分為不大于基準(zhǔn)值者(稱為左子序列)和大于基準(zhǔn)值者(稱為右子序列),然后再對左子序列和右子序列分別進(jìn)行快速排序, 最終得到非遞減的有序序列。
函數(shù) quicksort(int a[],int n)實(shí)現(xiàn)了快速排序,其中,n 個(gè)整數(shù)構(gòu)成的待排序列保存在數(shù)組元素 a[0]-a[n-1]中。
【C 代碼】
#include < stdio.h>
void quicksort(int a[] ,int n)
{
int i ,j;
int pivot = a[0]; //設(shè)置基準(zhǔn)值
i =0; j = n-1;
while (i< j) {
while (i<j &&(1)) j-- //大于基準(zhǔn)值者保持在原位置
if (i<j) { a[i]=a[j]; i++;}
while (i,j &&(2)) i++; //不大于基準(zhǔn)值者保持在原位置
if (i<j) { a[j]=a[i]; j--;}
}
a[i] = pivot; //基準(zhǔn)元素歸位
if ( i>1)
(3) ; //遞歸地對左子序列進(jìn)行快速排序
if ( n-i-1>1 )
(4) ; //遞歸地對右子序列進(jìn)行快速排序
}
int main ()
{
int i,arr[ ] = {23,56,9,75,18,42,11,67};
quicksort ( (5) ); //調(diào)用 quicksort 對數(shù)組 arr[ ]進(jìn)行排序
for( i=0; i<sizeof(arr) /sizeof(int); i++ )
printf(" %d\t" ,arr[i]) ;
return 0;
}