Java 快速排序優化 聚集元素法

2021-08-20 02:31:46 字數 1128 閱讀 4450

找基準、第一次快速排序;

//找基準

public

static

int partion(int array,int low,int high)

if(low >= high)else

//從前找

while(low < high && array[low] <= tmp)

if(low >= high)else

}array[low] = tmp;

return low;

}

將相同元素聚集在一起;

public

static

void quick(int array,int start,int end)

if(par < end-1)

}public

static

int focusnum(int array,int start,int end,int par)else}}

//右邊找

for(int j = right;j <= end;j++)else}}

int focus=;

return focus;

}

基準左右進行遞迴排序;

public

static

void quick(int array,int start,int end)

if(par < end-1)

}

呼叫方法;

public

static

void quicksort(int array)

測試。

public

static

void

main(string args) ;

quicksort(array);

system.out.println(arrays.tostring(array));

}

輸出結果:

Java的快速排序法

花了很久的時間才搞定,根據演算法導論裡面的偽 寫的 最初在網上找的例子都有問題,不知為啥,都把我給搞暈了 然後按偽 來寫,也出錯,真是很鬱悶 然後全部刪掉重新寫了很多次,突然間就寫好了 主要難點在於partition函式,裡面的i和j的關係,它們的值在什麼時候進行交換 可能是很久沒有考慮過資料結構的...

排序 快速排序及其優化(Java)

演算法思路 從待排元素中選取任意乙個元素,把它當做分割槽點 基準值 在遍歷的時候比基準值小的放在他的左邊,比基準值大的放在右邊。在一次遍歷結束後,基準元素在最終位置 穩定行 不穩定演算法,擴充套件問題 如何在o n 的適建範圍內找到乙個無需陣列的k大元素 方法一 遞迴方法 優化1.當排序的集合幾乎接...

快速排序法

一 快速排序演算法的基本特性 時間複雜度 o n lgn 最壞 o n 2 空間複雜度 o n lgn 不穩定。快速排序是一種排序演算法,對包含n個數的輸入陣列,平均時間為o nlgn 最壞情況是o n 2 通常是用於排序的最佳選擇。因為,基於比較的排序,最快也只能達到o nlgn c void q...