快速排序實現(Java)

2021-07-28 06:47:50 字數 1249 閱讀 4135

快速排序排序效率在同為o(n*logn)的幾種排序方法中效率較高。

該方法的基本思想是:

1.先從數列中取出乙個數作為基準數。

2.分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。

3.再對左右區間重複第二步,直到各區間只有乙個數。

雖然快速排序稱為分治法,但分治法這三個字顯然無法很好的概括快速排序的全部步驟。快速排序又有乙個形象的表達:挖坑填數+分治法(**如下):

class quicksort ;  

quecksort(array,0,array.length-1);

for(int i = 0 ; i < array.length ; i++)

}//分治遞迴

public

static

void quecksort(int array , int start , int end)else

}public

static

int partition(int array , int start , int end )

/*跳出上面的迴圈說明右邊有乙個小於mid的數,

把這個數填到左邊的坑里,(array[start]一開始賦值給了mid,挖了乙個坑),

並在右邊留下乙個坑array[end]

*/array[start] = array[end];

//如何左邊的數小於mid,則往左邊移動

while(array[start]<=mid && end>start)

/*跳出上面的迴圈說明左邊有乙個大於mid的數,

把這個數填到右邊的坑里(array[end]是上一步array[start] = array[end]挖的坑)

並在左邊留下乙個坑array[start]

*/array[end] = array[start];

}//最後把mid填到剩下的乙個坑里

array[start] = mid;

//返回這個坑的下標

return start;

}}

對挖坑填數進行總結

1.將基準數挖出形成第乙個坑a[start],基準數存在mid中。

2.end–由後向前找比它小的數,找到後挖出此數填前乙個坑a[start]中。

3.start++由前向後找比它大的數,找到後也挖出此數填到前乙個坑a[end]中。

4.再重複執行2,3二步,直到start==end,將mid中的基準數填入a[start]中。

排序 快速排序(java實現)

快速排序是一種非常高效的排序演算法,它採用了 分而治之 的思想,把大的拆分成小的,小的再拆分為更小的。其原理如下 對於給定一組記錄,通過一趟排序後,將原序列分為兩部分,其中前一部分的所有記錄都比後一部分的所有記錄小,然後再依次對前後兩部分的記錄進行快速排序,遞迴該過程,直到序列中所有的記錄均為有序為...

Java實現快速排序

package com.handy.ds public class quicksort for int i 0 i a.length i system.out.print a i system.out.println quicksort qs new quicksort qs.quitsort a,...

java實現快速排序

快速排序是平均速度最快的排序演算法,他的平均時間複雜度 n log n 快速排序採用分治法來進行排序,首先先給出乙個陣列,在一開始隨意選擇乙個數pivot,已pivot作為這個陣列的分界點,把大於pivot的數放在右邊,小於pivot的數放在左邊,然後在已pivot的兩邊分界點,右進行一次上一次的操...