快速排序 快排 演算法的C 兩種實現

2021-06-13 09:43:46 字數 596 閱讀 4002

快排演算法在分治的時候有兩種實現,一種實現是從兩邊到中間(partition),另一種實現是從一邊到另一邊(partition2)。我用乙個100000陣列測試發現前一種實現執行速度快一些。

這兩種的c++實現如下: (注:我用的**風格是gnu的**風格)

bool sort::qsort(int *ini, int start, int end)

else if(end == start)

return true;

}else

}int sort::partition(int *ini, int start, int end)

return i;

}int sort::partition2(int *ini, int start, int end)

{ // the main body for partition which from end to begin

int key = ini[end];

int i = start - 1; // suppose the mid pos is i+1

int j=start;

int tmp = 0;

for(;j

排序 快排的兩種寫法

之前的部落格記錄過各種排序 快排演算法 如下,該方法思路很直接也很清晰,但是在生成left和right時會需要新的空間,所以其空間複雜度要高一些。def quick sort li if len li 2 return li tmp li 0 快排中將序列分為左右的值 left x for x in...

快排的java兩種實現方式

快排是最基礎的幾個排序演算法之一,今天再來回顧下 public class quicksort private static void quicksort int array,int beg,int end 上面就是快排主要的框架,最重要就是partition方法,它是劃分並找到下次分割排序的位置p...

快排的兩種寫法

快速排序,原理很簡單就是在資料找乙個定點數,把小於這個數的數放到其左邊,大於這個定點數的數放到其右邊,再把左邊的數,右邊的數再按這種方式來排序,直至無數可排.先實現,不求空間消耗,把小於定點的數放乙個陣列 b,把大於定點的數的放乙個陣列 c,再把它們拷回陣列 a int quick sort int...