快排簡單實現

2021-06-05 21:48:00 字數 1023 閱讀 7463

沒事再寫下經典的快排**,感覺順手多了……

還是比較懶,wiki(介紹如下:

快速排序是一種「分而治之、各個擊破」的觀念。

快速排序使用分治法(divide and conquer)策略來把乙個序列(list)分為兩個子串行(sub-lists)。

步驟為:

從數列中挑出乙個元素,稱為 "基準"(pivot),

重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分割結束之後,該基準就處於數列的中間位置。這個稱為分割(partition)操作。

遞迴地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序。

最壞情況下,是倒序排好的情況。需要n^2,當時老師說過,加上乙個random可以使評價情況變好。既是在partition的迴圈前,把區間中的隨機乙個值和data[end]交換。

**如下:

#include #include using namespace std;

#define array_size 100

int data[array_size];

int partition(int data, int begin, int end)

} swap(data[++mid], data[end]);

return mid;

}void quicksort(int data, int begin, int end)

}void printn(int data, int size)

cout << endl;

} void getn(int data, int size) }

int main()

getn(data, size);

quicksort(data, 0, size - 1);

printn(data, size);

} return 0;

}

快排簡單版本

快排的思想很簡單,但是要手寫,有些細節可能要想一陣子。看到一種相對於傳統快排更簡單的方式 public class quick private static int partition int array,int l,int r private static void swap int array,...

python實現快排演算法 python快排演算法詳解

快排是python經典演算法之一。1 下面講解的是什麼是快排和快排的圖示。2 快排是一種解決排序問題的運算方法。3 快排的原理 在陣列中任意選擇乙個數字作為基準,用陣列的資料和基準資料進行比較,比基準數字打的數字的基準數字的右邊,比基準數字小的數字在基準數字的左邊,第一次排序之後分為比基準資料大或比...

快排 java實現

快排思想 1 確定基準值,一般是取第乙個 或者是取陣列的中間值 2 從後面開始查詢第乙個小於基準值的數,j 操作,用j來標記陣列下標 再從第二個開始,找到第乙個大於基準值的數,i 操作,用i來標記,當滿足 i!j 時,交換j和i下標對應的值,直到i j時,1.基準值歸位,2.將舊基準值置最終的位置。...