當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
javascript 实现快排 ,三向切分快排
生活随笔
收集整理的這篇文章主要介紹了
javascript 实现快排 ,三向切分快排
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
比如說對數組快排的思路就是:
快排的時間復雜度是 O(nlogn),是一種不穩定的排序算法。當出現 大量重復數據時 ,上述快排算法并不是一種最有解,他的改進型:三向切分快速排序是一種更高效的算法。其思想就是把一個數組分為三部分,一部分小于pivot,一部分等于pivot,還有一部分大于pivot。代碼如下
function quickSort3way(arr) {function sort3way(low, high) {if(low >= high) {return}let lt = low;//小于pivot的元素交換點let gt = high;//大于pivot的元素交換點let i = low +1;let pivot = arr[low];while(i <= gt) {if (arr[i] < pivot) {[arr[i], arr[lt]] = [arr[lt], arr[i]];i++;lt++;} else if (arr[i] === pivot) {i++;} else if (arr[i] > pivot) {[arr[i], arr[gt]] = [arr[gt], arr[i]];gt--;//此時 不能i++,因為交換后不能保證 arr[i] 等于還是小于 pivot}}sort3way(low,lt-1);sort3way(gt+1,high);}sort3way(0,arr.length-1);return arr; } 復制代碼轉載于:https://juejin.im/post/5af69223f265da0b7b35fb7b
總結
以上是生活随笔為你收集整理的javascript 实现快排 ,三向切分快排的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript:Scope(域)的
- 下一篇: JS 原型链 prototypt 和隐式