排序演算法(二) 快速排序 C語言實現

2021-10-05 05:21:42 字數 838 閱讀 9614

快速排序

快速排序的效能在所有排序演算法裡面是最好的,資料規模越大快速排序的效能越優。假如在提前得知處理資料可能會出現極端情況的前提下,可以選擇使用較為穩定的歸併排序。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...