沒事再寫下經典的快排**,感覺順手多了……
還是比較懶,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.將舊基準值置最終的位置。...