二分查詢和快速排序

2021-08-15 09:15:01 字數 792 閱讀 5504

快排的中心思想,就是選取乙個元素通過一趟排序將比這個元素大的換到前面,把這個元素小的換到後面。然後在繼續進行排序。

void sort(int datas,int low,int high)

int first = low;

int last = high;

int key = datas[first];

while (first < last)

datas[first] = datas[last]; //[9],3,5,23,9,12,22--------> 10 = 9 last = 4 從尾部開始找到 比key(第乙個元素)小的,然後將比key大的放到首部

while (first < last && datas[first] <= key)

datas[last] = datas[first]; //[9],3,5,23,9,12,22 從頭部開始找到 比key(第乙個元素)大的,然後將比key小的放到尾部

} datas[first] = key;

sort(datas, low, first -1);

sort(datas, first + 1, high);

}

二分查詢的思想就是取中間元素和目標元素比較,如果比目標大,則比下限,如果比目標小則比上限。

int find(int datas,int dst)else if (datas[middle] < dst) else 

} return -1;

}

二分查詢和快速排序

二分查詢的基本思想 二分查詢就是給定乙個已經排序好的陣列,輸入你想查詢的數值,然後對陣列進行折半查詢,找到直接返回在陣列中的位置,否則返回 1。它充分利用了元素間的次序關係,採用分治策略,可在最壞的情況下用o log n 完成搜尋任務。具體實現 1 binarysearch函式傳入已經排序好的陣列 ...

快速排序 二分查詢

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...

快速排序 二分查詢

基準數後面的數需要大於基準數,從後向前尋找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前邊元...