C語言快排

2022-09-16 09:15:07 字數 1377 閱讀 8984

1/*2

tue mar 24 20:07:26 202034

目的:快速排序

5結論:快排真難,演算法頭禿

6功能:首先取陣列首端元素為基準數(temp),先從右往左依次比較出首個

7比基準數小的元素,再從左往右依次比較出首個比基準數大的元素,兩者

8互換,重複以上操作,注意先右後左,直到i=j,a[i]與基準數互換910

形成新的序列,左邊為小於基準數序列,右邊為大於基準數序列。

1112

此時從左側序列開始重複以上操作,直到左側序列為公升序排列,

13再從右側序列開始重複以上操作 ,直到右側序列為公升序排列。

14左右先後無影響

1516

程式結束

17*/

18 #include19

//n:獲取陣列內容的實際大小

2021

int a[101

],n;

2223

void quicksort(int left ,int right ) //

left陣列的首端索引,right陣列的尾端索引

2458

while(a[i] <= temp && i5962

/*63

這樣寫看似符合快排邏輯,實際上結果是將大數往前排

64'小數'往後排,是倒序快排,大的往左放,小的往右放。

65while(a[j] <= temp && i < j)

68while(a[i] >= temp && i69

i++;70}

71*/

7273

//74

if(i 80//

重調基準數

81 a[left] = a[i];//

確定新的基準數

82 a[i] = temp;//

將前乙個基準數置中於序列

83/*

temp=a[i];

84temp的值由a[left]確立

85這樣寫會導致中間序列數無法確認

86*/

8788

/*89

左側序列快排及右側序列快排

90先後順序對結果無影響

91*/

92 quicksort(i+1

,right);

93 quicksort(left,i-1

);9495}

96int

main ()

107108 quicksort(1

,n);

109110

for(i = 1; i <= n; i++)

113return0;

114 }

C語言快排

作為時間複雜度與空間複雜度均為o nlogn 的排序演算法 快速排序,本文主要介紹它的簡單函式呼叫及其詳細的 實現 include includeint main 陣列型別不同,比較函式會有些微的差異 首先在函式的形參處,使用const void 表示無型別指標,也就是說可以接受任意型別的指標 其次...

C語言快排函式qsort

原本以為c語言中的快排函式都要靠自己去實現,今天才知道,原來qsort就是c語言中的快排函式,包含在stdlib.h標頭檔案中,函式一共有四個引數,沒有返回值。int cmp const void const void qsort s,n,sizeof s 0 cmp 其中第乙個引數s是乙個位址,即...

c語言之qsort(快排)

1.先看函式原型 void qsort void base,size t nitems,size t size,int compar const void const void 引數描述 1.1.base 指向要排序的陣列的第乙個元素的指標。2.nitems 由 base 指向的陣列中元素的個數。3...