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

2021-07-25 03:12:07 字數 1153 閱讀 7021

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

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

以下內容翻譯自:

譯文:

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

步驟如下:

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

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

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

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

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

// 交換兩個元素的位置

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語言實現)

自實現部分可參看慕課網陳越老師資料結構課程。庫函式函式原型 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 首先任意選取乙個資料 通常選用第乙個資料 作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。值得注意的是,快速排序不是一種穩定的排序演算法,也就是說,多個相同的值的相對位置也許會在演算法結束時產生變動。一趟快速排...