快速排序
快速排序的效能在所有排序演算法裡面是最好的,資料規模越大快速排序的效能越優。假如在提前得知處理資料可能會出現極端情況的前提下,可以選擇使用較為穩定的歸併排序。c++中的sort(a,a+n)函式的底層就是利用快速排序實現的。
快速排序運用了二分的思想,首先選擇乙個基準key,一般選擇陣列第乙個元素,然後定義左右兩端指標,先從左到右進行掃瞄直到,a[right] < temp,將a[right]移動至left所在位置 從右往左進行掃瞄,直到a[left] > temp,將a[left]移動到right所在位置上,左右端指標在排序過程中從陣列的兩端往中間進行靠近,直到right == left。快速排序則要進行多次快速排序過程,直到劃分的區間最後長度僅為1.
**實現:
#include
//劃分演算法
intpartition
(int a,
int s,
int t)
a[i]
=tmp;
return i;
}void
quicksort
(int a,
int s,
int t)
//對a[s...t]元素序列進行遞增排序
}int
main()
quicksort
(a,0
,n-1);
printf
("經過快速排序後:\n");
for(
int j=
0;j)printf
("\n");
return0;
}
快速排序演算法 C語言實現
快速排序演算法 c語言實現 注 本篇內容為翻譯,之所以選擇這篇進行翻譯原因是該文章含有動畫,能夠更加直觀地展示快速排序。同時,可以仔細看一下 中把結構化的思想給予了更加充分地表現。按照功能進行模組劃分的思想得到了徹底地貫徹。以下內容翻譯自 譯文 在快速排序演算法中,使用了分治策略。首先把序列分成兩個...
快速排序演算法 C語言實現
注 本篇內容為翻譯,之所以選擇這篇進行翻譯原因是該文章含有動畫,能夠更加直觀地展示快速排序。同時,可以仔細看一下 中把結構化的思想給予了更加充分地表現。按照功能進行模組劃分的思想得到了徹底地貫徹。以下內容翻譯自 譯文 在快速排序演算法中,使用了分治策略。首先把序列分成兩個子串行,遞迴地對子序列進行排...
快速排序演算法(C語言實現)
自實現部分可參看慕課網陳越老師資料結構課程。庫函式函式原型 void qsort void buf,size t num,size t size,int compare const void const void 函式說明 對buf指向對資料 包含num項,每項的大小為size 進行快速排序。voi...