快速排序是常用排序中的一種,其時間複雜度在理想狀態下可以達到o(logn),在一些需要高效處理排序的時候經常用到.
原理是將陣列中第乙個作為基數,然後將剩下的數分成兩個區,左邊的是小於基數值的數,右邊的大於基數值的數.將基準值放中間.然後利用遞迴將分開的兩個區做同樣的操作,直到完成排序
/**
* 快速排序
* @param array 需要排序的陣列
*/public
static
void
quicksort
(int
array)
/** * 開始快排
* @param array 陣列
* @param low 區域範圍的開始(左指標)
* @param high 區域範圍的結束(右指標)
*/private
void
quicksort
(int
array,
int low,
int high)
}/**
* 分割槽操作
* @param array 陣列
* @param low 區域範圍的開始(左指標)
* @param high 區域範圍的結束(右指標)
* @return 基準值位置
*/private
intpartition
(int
array,
int low,
int high)
// 2.將右側找到小於基準書的值加到左邊的(坑)位置,左指標向中間移動乙個位置i++
if(i < j)
// 3.從左向右移動i,找到第乙個大於等於基準值的值array[i]
while
(array[i]
< x && i < j)
// 4.將左側找到的大於等於基準值的值加入到右邊的坑中,右指標向中間移動乙個位置,j--
if(i < j)
}// 使用基準值填坑,這就是基準值的最終文職
array[i]
= x;
// 返回基準值的位置索引
return i;
}
排序演算法第二談 快速排序
把乙個陣列切分成兩個子陣列的基本思想 找乙個基準值,用兩個指標分別指向陣列的頭部和尾部 先從尾部向頭部開始搜尋乙個比基準值小的元素,搜尋到即停止,並記錄指標的位置 再從頭部向尾部開始搜尋乙個比基準值大的元素,搜尋到即停止,並記錄指標的位置 交換當前左邊指標位置和右邊指標位置的元素 重複2,3,4步驟...
Java排序演算法 快速排序
一.思想 對氣泡排序演算法的一種改進。通過一趟排序將排序的資料分割成兩個部分,其中一部分的所有資料都比另一部分的所有資料都要小,然後再按此方法對這兩部分分別再進行快速排序,依次類推。實現為 開始時先設兩個變數i start,j end 以第乙個元素作為中間點,pivot num i 以j 的形式從後...
java排序演算法 快速排序
陣列 2,6,3,6,5,9,1 輸出 1 2 3 5 6 6 9 private static void paixu int arrs,int h,int e while arrs x arrs e 交換值 int m m arrs h arrs h arrs e arrs e m 2,6,3,6...