這是我參與8月更文挑戰的第九天,活動詳情查看:8月更文挑戰」前端
到此爲止,咱們的數據結構算是基本講完了,接下來的篇章,想必不用我說,相信你們也猜到了,那很少嗶嗶,開啓咱們的新徵程 —— 前端之算法。算法
程序 = 數據結構 + 算法。數組
數據結構爲算法提供服務,算法圍繞數據結構操做。markdown
排序: 把某個亂序的數組變成升序或者降序的數組。數據結構
搜索:找出數組中某個元素的下標。app
JS中的排序:數組的 sort
方法。oop
JS中的搜索:數組的 indexOf
方法。post
冒泡排序動畫
選擇排序ui
插入排序
歸併排序
快速排序
......
順序搜索
二分搜索
......
介紹了這麼多,也該開始咱們的主題了,下面就讓我來叨叨這個冒泡排序。
比較全部相鄰的元素,若是第一個比第二個大,則交換它們。
一輪下來,能夠保證最後一個數是最大的。
執行 n - 1 輪,就能夠完成排序。
Array
的原型鏈上掛載一個 bubbleSort
方法。Array.prototype.bubbleSort = function () {
console.log(this)
}
const arr = [5, 4, 3, 2, 1]
arr.bubbleSort()
// [ 5, 4, 3, 2, 1 ]
複製代碼
這樣數組就均可以調用這個方法了。
接下來然咱們具體實現一下這個算法。
Array.prototype.bubbleSort = function () {
for (let i = 0; i < this.length - 1; i++) {
for (let j = 0; j < this.length - 1 - i; j++) {
if (this[j] > this[j + 1]) {
const temp = this[j]
this[j] = this[j + 1]
this[j + 1] = temp
}
}
}
}
const arr = [5, 4, 3, 2, 1]
arr.bubbleSort()
console.log(arr);
// [ 1, 2, 3, 4, 5 ]
複製代碼
兩個嵌套循環
時間複雜度: O(n^2)
End ~~~