快速排序
不斷地把最大或最小元素不斷冒出來。
如排序5 3 4 9 7 6 2
假如我們用公升序的方式,從左邊開始掃瞄,相鄰元素兩兩比較,當左邊元素比右邊大時就交換,反之,則不用交換。
第一趟迴圈後的結果為:3 1 5 4 6 7 49這樣就把最大的9冒出來了
第二塘迴圈後的結果為:1 3 4 5 6 47 9這樣就把最大的7冒出來了
以此迴圈,結果如下**圖所示
#include
void
bubbling
(int
*arr,
int n)
/* for(int t=0; tif
(flag ==0)
return;}
}int
main
(int agrc,
char
**agrv)
結果如下:
快速排序的基本思想是任取待排序序列的乙個元素作為中心元素(可以用第乙個,最後乙個,也可以是中間任何乙個),習慣將其稱為pivot,樞軸元素;將所有比樞軸元素小的放在其左邊;將所有比它大的放在其右邊;形成左右兩個子表;然後對左右兩個子表再按照前面的演算法進行排序,直到每個子表的元素只剩下乙個。
#include
int array_num;
void
quicksort
(int left,
int right,
int*quick_sort)
quick_sort[i]
= temp;
for(
int p =
0; p
)printf
("%d "
, quick_sort[p]);
printf
("\n");
quicksort
(left, i-
1, quick_sort)
;quicksort
(i+1
, right, quick_sort);}
intmain
(int agrc,
char
**agrv)
結果如下:
演算法的效率(氣泡排序 選擇排序 快排)
演算法的效率可以用 時間複雜度o n 來度量。時間複雜度反應了程式執行時間隨輸入規模增長而增長的量級,很大程度上能反應演算法的優略程度。我們最開始認識的排序方法有氣泡排序和選擇排序但是這個演算法的效率怎麼樣呢,讓我們來測試一下。首先,我們隨機生成乙個長度為100000的隨機數組,並選用選擇排序的方法...
排序演算法之交換(冒泡與快排)
排序演算法根據是否需要訪問外存,分為內部排序和外部排序。使用記憶體,分為插入 直接插入排序 希爾排序 選擇 簡單選擇排序 堆排序 交換 氣泡排序 快速排序 歸併 基數。5.氣泡排序 效率很低,實現簡單 待排序列 3 1 4 2 第一趟排序結果 1 3 2 4 第二趟排序結果 1 2 3 4 第三趟排...
Python快排與氣泡排序演算法(筆記)
def quicksort data 快速排序 if len data 2 遞迴入口及出口 mid data len data 2 選取基準值,也可以選取第乙個或最後乙個元素 left,right 定義基準值左右兩側的列表 data.remove mid 從原始陣列中移除基準值 for num in...