java之快速排序

2021-07-28 11:49:51 字數 1776 閱讀 6867

快速排序利用分治法的思想,先設定乙個基準(通常可以設定陣列的第乙個元素為基準),通過一趟快速排序使得左邊的資料比基準都要小,右邊的資料比基準都要大。然後利用相同的思想分別對左邊和右邊的資料進行快排,從而達到有序。

一趟快速排序的思想的是:給定乙個陣列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...