快速排序 二分查詢

2021-06-22 21:11:34 字數 532 閱讀 2830

1.     舉例說明一下吧,這個可能不是太好理解。假設要排序的序列為

2 4 9 3 6 7 1 5 首先用2當作基準,使用i j兩個指標分別從兩邊進行掃瞄,把比2小的元素和比2大的元素分開。首先比較2和5,5比2大,j左移

2 4 9 3 6 7 1 5 比較2和1,1小於2,所以把1放在2的位置

1 4 9 3 6 7 1 5 比較2和4,4大於2,因此將4移動到後面

1 4 9 3 6 7 4 5 比較2和7,2和6,2和3,2和9,全部大於2,滿足條件,因此不變

經過第一輪的快速排序,元素變為下面的樣子

[1] 2 [4 9 3 6 7 5]

之後,在把2左邊的元素進行快排,由於只有乙個元素,因此快排結束。右邊進行快排,遞迴進行,最終生成最後的結果。

int quicksort(vector&v,int left,int right)

{ if(leftkey)

high--;

v[low]=v[high];

while(low

快速排序 二分查詢

基準數後面的數需要大於基準數,從後向前尋找a j tmp,尋找到a 8 的3 5,將a 8 放入空位a 0 中,a j a 8 此時空出位置 接著從前向後遍歷a i 5,找到a 1 符合條件,將a 1 放入空位a 8 a 1 空出 繼續從後向前尋找 繼續從後向前尋找 遍歷至i j 結束,此時i前邊元...

二分查詢,氣泡排序, 快速排序

class test if start 1 end else mid start intval end start 2 if arr mid x elseif arr mid x elseif arr mid x 氣泡排序 思路 如原始有x個值需要排序 控制最大的值一直往右移動,第一次迴圈必然造成最...

二分查詢和快速排序

快排的中心思想,就是選取乙個元素通過一趟排序將比這個元素大的換到前面,把這個元素小的換到後面。然後在繼續進行排序。void sort int datas,int low,int high int first low int last high int key datas first while fi...