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