閱讀以下說(shuō)明和 C 代碼,填補(bǔ)代碼中的空缺,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
對(duì)一個(gè)整數(shù)序列進(jìn)行快速排序的方法是:在待排序的整數(shù)序列中取第一個(gè)數(shù)作為基準(zhǔn)值,然后根據(jù)基準(zhǔn)值進(jìn)行劃分,從而將待排序列劃分為不大于基準(zhǔn)值者(稱為左子序列)和大于基準(zhǔn)值者(稱為右子序列),然后再對(duì)左子序列和右子序列分別進(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) ; //遞歸地對(duì)左子序列進(jìn)行快速排序
if ( n-i-1>1 )
(4) ; //遞歸地對(duì)右子序列進(jìn)行快速排序
}
int main ()
{
int i,arr[ ] = {23,56,9,75,18,42,11,67};
quicksort ( (5) ); //調(diào)用 quicksort 對(duì)數(shù)組 arr[ ]進(jìn)行排序
for( i=0; i<sizeof(arr) /sizeof(int); i++ )
printf(" %d\t" ,arr[i]) ;
return 0;
}
10年專注信管,信管教育專注者,信管網(wǎng)優(yōu)勢(shì)
免費(fèi)試聽(tīng)信管網(wǎng)信息系統(tǒng)項(xiàng)目管理師課程
全國(guó)前50名高分學(xué)員訪談:董麗(174)、李思...
信息系統(tǒng)項(xiàng)目管理師高端班培訓(xùn)課程
信管老師100小時(shí)直播課程
軟考報(bào)名專題(報(bào)名時(shí)間、入口等)
中級(jí)系統(tǒng)集成項(xiàng)目管理工程師通關(guān)課程
系統(tǒng)規(guī)劃與管理師課程(考試介紹與題型分析)
軟題庫(kù):軟考在線題庫(kù)、支持手機(jī)答題