快速排序實現

2022-09-11 05:21:09 字數 1125 閱讀 6235

快速排序的基本思想是:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,從而使全部的資料有序。快排的平均時間複雜度是o(nlogn);最壞是o(n^2)。

1

public

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 ...