乙個讓很多人糾結的問題--用什麼排序演算法 好。還有什麼穩定,非穩定的一堆問題。今天閒著,拿幾個演算法測了一下,報個結果給大家。
首先先放出測試主 檔案 ** ,裡面包括有冒泡、快速、插入、雞w酒等排序
為了讓結果準些,我隨機生成了9999長度的大陣列進行排序
gt = gettimer();
//quicksort(arr,0,9999); // 演算法用時: 36 毫秒
// 演算法用時: 188 毫秒
//bubblesort(arr); // 演算法用時: 8933 毫秒
//bubblessortplus(arr); // 演算法用時: 12382 毫秒
//cocktailsortarr(arr); // 演算法用時: 11150 毫秒
//insertionsortarr(arr); // 演算法用時: 4677 毫秒
trace(gettimer()-gt);
從結果看出,快速排序最快,比官方演算法快四五倍,不過麻煩的是要輸入兩個引數。估計sort的核心也是快速排序。
對比一下,快速排序麻煩的是還要帶兩引數,而且快速排序只排數字陣列。sort還可以排字元陣列。對我而言,那100左右毫秒的差別肉眼沒感覺~~我更多情況會選擇sort
不過sort排序非穩定,這也讓人糾結,需要穩定時還是得用快速排序。
其它的氣泡排序、插入排序不給力,一排序就等個十秒八秒的,誰受得了。不過冒泡易讀,常用在一些簡單的小陣列,方便在中間做些特殊演算法修改。
幾種排序演算法及其效率對比
public class bubblesort sort arr system.out.println arrays.tostring arr long start system.currenttimemillis sort arr long end system.currenttimemillis...
重溫一下各種排序演算法
最近打算用一些併發的模型研究一下排序演算法.所以,我首先回顧了一下各種排序演算法,並將它們用c語言實現了.氣泡排序 基本思想 先取第乙個元素,將它與後面n 1個元素比較,將n個元素中最小的移到首部.接著,忽略第乙個元素,取第二個元素,將它與後面的n 2個元素比較,將n 1個 元素中最小的移到位置2....
總結一下快速排序演算法
使用快速排序演算法將陣列中的數從小到大排序 先取陣列第乙個數作為key,陣列第乙個位置為first,陣列最後乙個元素作為last,last先和key比較,如果比key小,就把last放到first的位置。如果比key大,那麼last將減一,直到last的位置所在的數比key小,然後把last所在的位...