排序 快速排序 另一種取劃分點的方法

2022-06-10 01:24:11 字數 861 閱讀 9857

最基本的劃分點由陣列的最後乙個值來確定,現在是將陣列的最後乙個值的前乙個數值作為劃分點,但是需要經過三項取一方法的變換,最後它位置上的值是三個中最大的。

public

class

arrayins

public

void insert(long

value)

public

intsize()

public

void

display()

system.out.println();

}public

void

quicksort()

//遞迴方法

public

void recquicksort(int left,int

right)

else

}private

long medianof3(int left, int

right)

private

void manualsort(int left, int

right)

}else

}public

int partitionit(int left,int right,long

pivot)

swap(leftptr, right-1);

return

leftptr;

}public

void swap(int dex1,int

dex2)

}

public

class

test

}

另一種table排序

click on the table header to sort in ascending order.last name first name birthday siblings smith john 7 12 1978 2johnson betty 10 15 1977 4henderson ...

快速排序的另一種分割函式

在最優情況下,partition每次都劃分得很均勻,如果排序n個關鍵字,其遞迴樹的深度就為 log 2n 1 log 2 1 log2 n 1 x 表示不大於 x 的最大整數 即僅需遞迴 log 2 n log 2 log2 n 次,每次遞迴需要將整個陣列掃瞄一遍。迴圈結束後,idx左邊都是比樞紐小...

選擇排序的另一種思路

在我們上次的選擇迴圈中,我們用了乙個minindex變數來儲存最小值的下標,每次迴圈完畢後用最小值下標的元素與手元素進行交換,遍歷一次,記錄下最值元素所在位置,遍歷結束後,將此最值元素調整到合適的位置。但是我們還有種交換變數的方式,我們可以用待排序陣列中的元素與待排序序列中的首元素比較,如果比待排序...