快速排序(quick sort)的基本思想是通過一趟排序將待排記錄分割成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分記錄的關鍵字小,則可分別對著兩部分記錄繼續進行排序,以達到整個序列有序,具體步驟為
設立樞軸,將比樞軸小的記錄移到低端,比樞軸大的記錄移到高階,直到low=high停止
分別對樞軸低高階部分再次快速排序(即重複第1步)
重複第1、2步,直到low=high停止
c語言實現(編譯器dev-c++5.4.0,源**字尾.cpp)
1 #include 2 #include 3#define maxsize 6
4#define ok 1
5#define error 0
67 typedef int
status;
8 typedef int
keytype;
9 typedef char infotype;//
要malloc()
1011 typedef struct
redtype;//
記錄型別
1516 typedef struct
sqlist;
20/*
21name: 初始化
2223
author: leo
24date: 10-12-15 16:54
25description: 初始化順序表
26*/
2728 status initsqlist(sqlist &l)
3839
return
ok;40}41
/*42
name: 部分排序
4344author: 鋼鐵俠
45date: 10-12-15 17:00
46description: 反覆按照樞軸進行快速排序:將比樞軸大的放在一邊,比樞軸小的放在另一邊
47*/
4849
int partition(sqlist &l,int low,int
high)
57 l.r[high]=l.r[low];58}
59 l.r[low]=l.r[0
];60
return
low;61}
6263
/*64
name: 啟動遞迴快速排序
6566author: 鋼鐵俠
67date: 11-12-15 14:37
68description: 啟動遞迴快速排序,並進行第乙個大部分(所有記錄)的快速排序
69*/
7071 status quicksort(sqlist &l,int low,int
high)
78return
ok;79}80
81 status tr**erse(sqlist &l)
86}
8788
intmain()
C 快速排序 QuickSort
快速排序通過將資料分割為兩部分 一部分比另一部分的所有數都小的方法來進行快速排序,low high為左右軸 執行時會移動兩個軸與假定關鍵字之間進行比較 下面有兩種快速排序算 法的 寫法,第一種如果陣列中有相同的數會出現死迴圈 第二種則不會有這種情況 只作參考1.public static void ...
c語言快速排序quicksort
原理 每次定乙個基準,將陣列裡的所有數按照大小排列,比基準小的在左邊,比基準大的在右邊,再通過向左遞迴,向右遞迴即可完成快速排序。原理可參考 include include include include using namespace std vector int a void quicksort...
快速排序 QuickSort
快速排序通常用於排序的最佳的使用選擇,其期望執行時間為 o nlgn 能夠進行就地排序。最壞執行時間為 o n 2 演算法描述 分解 divide 陣列 a beg end 被劃分為兩個子陣列 a beg mid 1 和a mid 1 end 使得a beg mid 1 中的資料都小於 a mid ...