JS常見簡單演算法排序

2021-10-06 21:14:45 字數 1300 閱讀 7977

我們面試中經常會遇到排序演算法問題,我整理了氣泡排序、選擇排序、插入插排等常見簡單排序方法。希望此文想對了解排序的前端同學有所幫助。

為了簡單高效演示演算法的實現思路,我先封裝乙個建構函式。以下排序我們預設都是從小到大排序,因為不論從大到小或者從小到大思路都一樣。

function arraylist() 

// 交換陣列 m 和 n 的位置

this.swap = function (m, n)

}

氣泡排序是依次比較相鄰的兩個數,將比較小的數放在前面,比較大的數放在後面。

arraylist.prototype.bubblesort = function () }}

return this.tostring(); // 1-3-4-5-6-7-8-9

}

氣泡排序的比較次數是 1 + 2 +3 + ... + n - 1 = n(n - 1)/2,大o表示法為o(n^2)。如果每兩次比較交換一次那麼氣泡排序的交換次數為 n(n - 1)/4。

首先在未排序序列中找到最小元素,存放到排序序列的起始位置,再從剩餘未排序元素中繼續尋找最小元素,然後放到已排序序列的末尾。

arraylist.prototype.selectsort = function () 

}this.swap(min, j);

}return this.tostring(); // 1-3-4-5-6-7-8-9

}

選擇排序的比較次數是 n - 1 + n - 2 + n - 3 + ... + 1 = n*(n - 1)/2, 大o表示法為o(n^2)。 但是交換次數為 n - 1,比氣泡排序少很多。

插入排序將第一待排序序列第乙個元素看做乙個有序序列,把第二個元素到最後乙個元素當是未排序序列。從頭到尾依次掃瞄未排序序列,將掃瞄到的每個元素插入有序序列的適當位置。

arraylist.prototype.insertsort = function () 

this.list[j] = temp;

}return this.tostring();

} var list = new arraylist(); // 1-3-4-5-6-7-8-9

插入排序的比較次數是 (1 + 2 +3 + ...+ n - 1)/2 = n*(n - 1)/4。它的比較次數和氣泡排序和選擇排序相比是最少的。不過用大o表示法也為o(n^2)。

以上三種只是簡單排序,而插入排序思想是高階排序實現的基礎,後期更新介紹希爾排序和快速排序等高階排序內容。

常見JS簡單演算法

const myarray 2,4,19,29,10,60,14 const quicksort function myarray else if myarray i pivot return quicksort left concat pivot quicksort right 遞迴,然後合併左右...

JS 常見排序演算法

氣泡排序 function bubblesort myarray return myarray function swap myarray,p1,p2 var myarray 3 44,38 5,47 15,36 26,27 2,46 4,19 50,48 var result bubblesort...

js常見排序演算法

排序演算法是js最基礎的演算法 1.氣泡排序 2.快速排序 3.選擇排序 4.插入排序 氣泡排序 氣泡排序的思想就是從左到右依次比較陣列a相鄰的兩個數,將較大的數放到後面,一輪比較之後,最大的數會排到最後面 第二輪比較後次大的數會在倒數第二的位置,直到進行a.length次比較後,陣列就會公升序排列...