快速排序雙向掃瞄

2021-09-24 12:24:35 字數 912 閱讀 5974

package 排序;

/** * 思想:partition部分是從第二個元素開始作為左指標與第乙個元素(主元)進行比較

* 如果左指標對應的元素小於等於主元,那麼左指標繼續向右移動,直到左指標對應的元素大於主元

* 輪到右指標進行掃瞄,如果右指標對應的元素比主元大,那麼右指標向左移動,

* 直至主元大於右指標對應的元素,那麼右指標停止移動

* 當左指標判斷完了右指標判斷完了 又沒有超出邊界範圍,

* 那麼左右指標對應的元素進行交換

* * 當跳出left<=right不成立的時候,

* 右邊指標對應的元素總是小於主元的

* 所以右指標對應的元素和主元交換

* * 注意邊界條件

* @author ad

* */

public class 快排雙向掃瞄排序 ;

int p=0;

int r=arr.length-1;

quicksort(arr,p,r);

for (int i = 0; i < arr.length; i++) }

private static void quicksort(int arr,int p,int r)

while(left<=right&&arr[right]>pivot)

if (leftfor (int i = 0; i < arr.length; i++)

system.out.println("");

} //這是已經超出了邊界條件 右指標對應的元素和第乙個元素進行交換

int temp=arr[right];

arr[right]=arr[p];

arr[p]=temp;

return right; }

}

快速排序 雙邊掃瞄與單邊掃瞄的實現

快速排序 時間複雜讀o n logn 最差o n 2 平均o n logn 主要思想是選取乙個標誌位,大於標誌位的放到右邊,小於標誌位的放到左邊,在以標誌位為分割,分而制之,左遞迴,右遞迴,直到完成。快速排序的思想 雙邊掃瞄 快速排序就像乙個資料快,前後各有乙個下標 指標 i j,隨機選取 此處取下...

C語言 雙向鍊錶的快速排序

之前一直想用雙向鍊錶來快排,想像陣列快排一樣給第乙個陣列下標 第乙個有值節點的指標 和最後乙個陣列下標 最後乙個有值節點指標 結果執行時經常有問題,程式有時會出錯,於是紙上演算了幾次發現會訪問到未知的記憶體.因為當low和high在最左側或者最右側相同時,再經過一次呼叫時 box qsort i,l...

linux 執行緒 快速掃瞄

好久沒有用過多執行緒了,今天 看code有碰到 不少的多執行緒的東西,有必要快速掃一邊,include 1 pthread t 執行緒的id,不同與程序id的是,程序id pid t是乙個非負的整數。而pthread t在標準裡並沒有規定它的實現,可以用結構體來實現 不同的系統可能有不同的實現 2 ...