快速排序思路:首先是定義乙個變數key,把陣列的第乙個元素的值賦給key,然後定義兩個變數start,end指向陣列的第乙個元素和最後乙個元素。然後從後往前遍歷,一直end--,知道下標為end的值小於key,就交換下標為start,end的值,然後再從前遍歷,一直start++,直到下標為start的值大於key,就交換下標為start,end的值。這樣,經過一次排序之後,小於key的出現在key的左邊,大於key的出現在key的右邊。然後再用遞迴對key的左右兩邊進行上述方法進行排序。
//判斷陣列是否為空,陣列元素是否為0
if (data.length < 1 || data == null)
//頭指標小於尾指標,則返回
if (start >= end)
//陣列不為空且元素個數大於0
boolean flag = true;
int low = start;
int high = end;
int key = data[low];
while (low < high) else
} else else
}}soft_quick(data, start, low - 1);
soft_quick(data, high + 1, end);
int temp = data[start];
data[start] = data[end];
data[end] = temp;
for (int index : data)
system.out.println();
最後是執行結果: 演算法學習之快速排序
快速排序在平均狀況下時間複雜度o nlogn 快速排序法是氣泡排序的進化版本,在最差情況下他們的時間複雜度是一樣的 o n2 但是在平均狀況下其時間複雜度較氣泡排序更低,快速排序是一種不穩定的演算法。快速排序演算法的思想 上圖有長度不相同次序混亂的條形圖 可看作陣列中大小不同的資料 選擇任意乙個位置...
排序演算法學習 快速排序
快速排序 作為氣泡排序的一種改進 通過設定乙個標誌值 通常為陣列第乙個元素pivot 一次快排將陣列分成兩個部分,一部分 公升序 前一部分 小於標誌值pivot,另一部分大於標誌值 公升序 後面部分 各部分內部可以是 通常也是 無序的。通過遞迴地呼叫這樣的排序,使得最終陣列所有的元素有序。一次具體的...
排序演算法學習 快速排序
今天演算法實驗重新學習了快速排序演算法,對此有了一些理解,把它記錄在此以供日後學習。如下為快速排序演算法的被呼叫部分。int get loc int arr int low,int high arr low arr i arr i temp return i 返回基準位置 演算法本質是從後往前與從前...