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

2021-09-06 16:40:45 字數 1165 閱讀 4202

注:本篇內容為翻譯,之所以選擇這篇進行翻譯原因是該文章含有動畫,能夠更加直觀地展示快速排序。同時,可以仔細看一下**,**中把結構化的思想給予了更加充分地表現。按照功能進行模組劃分的思想得到了徹底地貫徹。

以下內容翻譯自:

譯文:在快速排序演算法中,使用了分治策略。首先把序列分成兩個子串行,遞迴地對子序列進行排序,直到整個序列排序結束。

步驟如下:

在序列中選擇乙個關鍵元素做為軸;

對序列進行重新排序,將比軸小的元素移到軸的前邊,比軸大的元素移動到軸的後面。在進行劃分之後,軸便在它最終的位置上;

遞迴地對兩個子串行進行重新排序:含有較小元素的子串行和含有較大元素的子串行。

下面的動畫展示了快速排序演算法的工作原理。

快速排序圖示:可以圖中在每次的比較選取的key元素為序列最後的元素。

#include #include 

void swap(int *x,int *y)

int choose_pivot(int i,int

j )void quicksort(int list,int m,int

n)

//交換兩個元素的位置

swap(&list[m],&list[j]);

//遞迴地對較小的資料序列進行排序

quicksort(list,m,j-1

); quicksort(list,j+1

,n);

}}void printlist(int list,int

n)void

main()

printf(

"進行排序之前的序列:\n");

printlist(list,max_elements);

//sort the list using quicksort

quicksort(list,0,max_elements-1

);

//print the result

printf("

使用快速排序演算法進行排序之後的序列:\n");

printlist(list,max_elements);

}

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

快速排序演算法 c語言實現 注 本篇內容為翻譯,之所以選擇這篇進行翻譯原因是該文章含有動畫,能夠更加直觀地展示快速排序。同時,可以仔細看一下 中把結構化的思想給予了更加充分地表現。按照功能進行模組劃分的思想得到了徹底地貫徹。以下內容翻譯自 譯文 在快速排序演算法中,使用了分治策略。首先把序列分成兩個...

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

自實現部分可參看慕課網陳越老師資料結構課程。庫函式函式原型 void qsort void buf,size t num,size t size,int compare const void const void 函式說明 對buf指向對資料 包含num項,每項的大小為size 進行快速排序。voi...

c語言實現快速排序演算法

設要排序的陣列是a 0 a n 1 首先任意選取乙個資料 通常選用第乙個資料 作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。值得注意的是,快速排序不是一種穩定的排序演算法,也就是說,多個相同的值的相對位置也許會在演算法結束時產生變動。一趟快速排...