1/*2tue 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...