最基本的劃分點由陣列的最後乙個值來確定,現在是將陣列的最後乙個值的前乙個數值作為劃分點,但是需要經過三項取一方法的變換,最後它位置上的值是三個中最大的。
publicclass
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)
}
publicclass
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變數來儲存最小值的下標,每次迴圈完畢後用最小值下標的元素與手元素進行交換,遍歷一次,記錄下最值元素所在位置,遍歷結束後,將此最值元素調整到合適的位置。但是我們還有種交換變數的方式,我們可以用待排序陣列中的元素與待排序序列中的首元素比較,如果比待排序...