快速排序的基本思想是:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,從而使全部的資料有序。快排的平均時間複雜度是o(nlogn);最壞是o(n^2)。
1public
class
quicksort ;
8system.out.println(arraytostring(num));
9 quicksort(num,0,num.length-1);
10system.out.println(arraytostring(num));
1112}13
14/**
15* 快速排序
16*
@param
num 排序的陣列
17*
@param
left 陣列的左下標
18*
@param
right 陣列的右下標
19*/
20private
static
int partition(int num, int left, int
right)34}
35 num[left] =num[i];
36 num[i]=key; //
把key交換到中間的位置
37return
i;3839}
40private
static
void quicksort(int num, int left, int
right)
45int i =partition(num, left, right);
46 quicksort(num,left,i-1);
47 quicksort(num,i+1,right);48}
4950
private
static string arraytostring(int
arr)
55return
str;56}
57 }
快速排序實現
1.結束條件 low high 2.快速排序要分而治之。故需要分的位置,位置便是當前元素經過排列後應該所在的位置。3.對於單次的排列,都使得乙個元素排在了正確的位置,她的左面比她小,右側比她大。package com.jue.quicksort public class quicksort logs...
實現 快速排序
快速排序的基本思想 1 先從數列中選擇乙個數作為基準數 一般會把陣列中最左邊的數當做基準數 2 然後從數列兩邊進行檢索 先從右邊檢索比基準數小的,再從左邊檢索比基準數大的 如果檢索到了,就停下,然後交換這兩個元素。然後再繼續檢索。3 直到左檢索和右檢索相遇,把基準數和相遇位置的數交換。4 第一輪檢索...
快速排序實現
快速排序的 快 是因為使用了 分治法 使其時間複雜度降低到了 nlogn author qucg version 2019 5 19 description 快速排序,快速排序的 快 是因為使用了 分治法 public class quicksort 得到基準元素位置 int pivotindex ...