快速排序利用分治法的思想,先設定乙個基準(通常可以設定陣列的第乙個元素為基準),通過一趟快速排序使得左邊的資料比基準都要小,右邊的資料比基準都要大。然後利用相同的思想分別對左邊和右邊的資料進行快排,從而達到有序。
一趟快速排序的思想的是:給定乙個陣列array,初始時以陣列的第乙個元素作為基準,先從右往左掃瞄,若array[right]大於基準且left小於right時,則進行–right操作,條件不滿足時退出迴圈,進行array[left]=array[right]操作,接著從左往右掃瞄,若array[left]小於基準且left小於right時,則進行++left操作,條件不滿足時退出迴圈,進行array[right]=array[left]操作,整個迴圈退出時,將基準的值賦給array[left],然後返回基準的位置left,進行下一趟快速排序。
public
class
sort ;
system.out.println("排序前陣列為:");
print(intarray);
quicksort(intarray,0,intarray.length-1);
system.out.println("排序後陣列為:");
print(intarray);
string strarray=;
system.out.println("排序前陣列為:");
print(strarray);
quicksort(strarray,0,strarray.length-1);
system.out.println("排序後陣列為:");
print(strarray);
float floatarray=;
system.out.println("排序前陣列為:");
print(floatarray);
quicksort(floatarray,0,floatarray.length-1);
system.out.println("排序後陣列為:");
print(floatarray);
}/**
* 列印輸出陣列
*@param array
*/public
static
super t>> void
print(t array)
system.out.println();
}/**
* 遞迴呼叫,快速排序
*@param array 待排序的陣列
*@param left 起始位置
*@param right 末位置
*/public
static
super t>> void
quicksort(t array,int left,int right)
}/**
* 一次快排
*@param array 待排序的陣列
*@param left 起始位置
*@param right 末位置
*@return 基準的位置
Java排序之快速排序 2
快速排序 快排的平均效率總的來說是最快的排序演算法,但是他也有那種最壞的情況。比如說一組陣列然後要排成順序,那麼他的時間複雜度就成了o n 2 當然這個是最壞情況不會經常遇到,但是我們總要了解下。好了 然後接下來是我個人對快排的一些簡單總結 在快排 quicksort 中,我們一般會選出乙個中軸 通...
Java排序演算法之快速排序
首先在陣列中選擇乙個基準點 該基準點的選取可能影響快速排序的效率,後面講解選取的方法 然後分別從陣列的兩端掃瞄陣列,設兩個指示標誌 lo指向起始位置,hi指向末尾 首先從後半部分開始,如果發現有元素比該基準點的值小,就交換lo和hi位置的值,然後從前半部分開始掃秒,發現有元素大於基準點的值,就交換l...
Java排序演算法之快速排序
基本思想 在資料序列中選擇乙個值作為比較的基準值,每趟從資料序列的兩端開始交替進行,將小於基準值的元素交換到序列前端,將大於基準值的元素交換到序列後端,介於兩者之間的位置則成為基準值的最終位置,直到子串行長度為1,完成排序 以序列,進行快速排序,以下是一趟快速排序過程示意圖 private stat...