經典演算法 快速排序 javascript

2021-08-16 21:26:56 字數 1138 閱讀 5901

1.在資料集之中,找乙個基準點

2.建立兩個陣列,分別儲存左邊和右邊的陣列

3.利用遞迴進行下次比較

//方式一

array.prototype.quick_sort = function() ;

//方式二

var quicksort2=function(array)

else return false;

};//使用時也可以直接用quick(array,0,array.lenth-1)

var quick=function(array,left,right)

}else return array;

}else return false;

};var partition=function(array,left,right) //!important >=

swap(array,i,j);

while (i補充

//方式三

//使用js自帶排序api--sort()

//v8 通過原地快速排序演算法實現(各個引擎實現方式是不一樣的)

//[見原始碼710行](

//但是,快速排序通常被描述為乙個原地演算法,但是事實上並不是。大部分的實現需要o(log n)的空間來支援它的分治法(divide-and-conquer)遞迴。

//嚴格意義上js自帶sort不是快排

arr.sort((a,b)=>a-b);

關於效率:
var arr = ;

/*一萬條隨機數*/

for(var n = 0; n < 10000; n++)

var text = function (fn, param)

text();

結論:(結果為node編譯)

方法一執行效率有點感人最為耗時(一萬條耗時約220ms)

方法二在平時應該較為常見(一萬條耗時6~9ms)

效率上面js自帶sort會更勝一籌,但要注意的事這貨在v8引擎下,陣列長度<=20時用的插入排序;(耗時3ms)

附:

c語言演算法集合

原地演算法

《經典排序演算法 快速排序》

快速排序是實踐中已知的最快的排序演算法,平均執行時間o nlogn 該演算法之所以快是因為非常精煉和高度優化的內部迴圈。它也是一種分治的遞迴演算法,將陣列s排序的基本演算法由下列簡單的四步組成 如果s中元素個數是0或1,則返回。取s中任一元素v,稱之為樞紐元。將s 分成兩個不相交的集合s1 x v ...

經典排序演算法 快速排序

使用分割槽演算法並找出主元 對主元兩邊的序列分別進行排序 整體時間複雜度 o nlog n public class quicksort 分割槽演算法 public static intpartition int a,int l,int r else if a l a mid a l a r els...

經典演算法 快速排序

題目說明 快速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序n 個專案要 n log n 次比較。在最壞狀況下則需要 n2 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 n log n 演算法更快,因為它的內部迴圈 inner loop 可以在大部分的架構上很有效率地被實...