快排的中心思想,就是選取乙個元素通過一趟排序將比這個元素大的換到前面,把這個元素小的換到後面。然後在繼續進行排序。
二分查詢的思想就是取中間元素和目標元素比較,如果比目標大,則比下限,如果比目標小則比上限。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前邊元...