前端之算法(一)

這是我參與8月更文挑戰的第九天,活動詳情查看:8月更文挑戰前端

到此爲止,咱們的數據結構算是基本講完了,接下來的篇章,想必不用我說,相信你們也猜到了,那很少嗶嗶,開啓咱們的新徵程 —— 前端之算法。算法

算法

  • 算法:一系列解決問題的清晰指令,就像是食譜同樣。

數據結構與算法的關係

  • 程序 = 數據結構 + 算法。數組

  • 數據結構爲算法提供服務,算法圍繞數據結構操做。markdown

排序和搜索

  • 排序: 把某個亂序的數組變成升序或者降序的數組。數據結構

  • 搜索:找出數組中某個元素的下標。app

JS中的排序和搜索

  • 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 ~~~

相關文章
相關標籤/搜索