成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端需要知道的數(shù)據(jù)結(jié)構(gòu)與算法(持續(xù)更新中...)

Jensen / 3054人閱讀

摘要:通常需要在實(shí)際的計(jì)算機(jī)運(yùn)行才知道具體的執(zhí)行時(shí)間。算法的執(zhí)行時(shí)間往往和算法代碼中語(yǔ)句執(zhí)行的數(shù)量有關(guān)??臻g復(fù)雜度運(yùn)行一段程序的內(nèi)存占用,空間復(fù)雜度通常指的是算法程序在計(jì)算機(jī)只想中只想所需要的存儲(chǔ)空間。

基本數(shù)據(jù)結(jié)構(gòu) JS 數(shù)據(jù)類型

基本類型(棧 stack): Number String Boolean Null Undefined 和 Symbol(es6 新增)
引用類型(堆 heap):Object Array Function Data

數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu)是指相互之間存在著一種或多種關(guān)系的數(shù)據(jù)元素的集合和該集合中數(shù)據(jù)元素之間的關(guān)系組成

算法 算法特征

有窮性、確定性、可行性、輸入、輸出

算法設(shè)計(jì)衡量

正確性、可讀性、健壯性, 時(shí)間復(fù)雜度, 空間復(fù)雜度

時(shí)間復(fù)雜度

運(yùn)行一段程序的計(jì)算工作量,時(shí)間復(fù)雜度即通常所說(shuō)的算法執(zhí)行所需要耗費(fèi)的時(shí)間,時(shí)間越短,算法越好。但是,一個(gè)算法的執(zhí)行時(shí)間往往無(wú)法精確估計(jì)。通常需要在實(shí)際的計(jì)算機(jī)運(yùn)行才知道具體的執(zhí)行時(shí)間。但是,也可以大致進(jìn)行估計(jì),得到算法的時(shí)間復(fù)雜度。算法的執(zhí)行時(shí)間往往和算法代碼中語(yǔ)句執(zhí)行的數(shù)量有關(guān)。

空間復(fù)雜度

運(yùn)行一段程序的內(nèi)存占用,空間復(fù)雜度通常指的是算法程序在計(jì)算機(jī)只想中只想所需要的存儲(chǔ)空間。

eg:

O(1):常數(shù)運(yùn)算

O(n):1 層循環(huán)

O(n^2):2 層循環(huán)

O(n^n):n 層循環(huán)

O(log2n):int i = 1, n = 100;while(i < n){ i = i * 2;}

算法分類

快速排序算法

深度優(yōu)先算法

廣度優(yōu)先算法

堆排序算法

歸并排序算法

冒泡排序

原理:每次把最大或者最小的浮到最頂層

let arr = [33, 1, 46, 23, 35, 12, 30, 4, 16, 2]
function bubbleSort(array) {
  for (var i = 0; i < array.length; i++) {
    for (var j = 0; j < array.length - i - 1; j++) {
      if (array[j] > array[j + 1]) {
        var temp = array[j]
        array[j] = array[j + 1]
        array[j + 1] = temp
      }
    }
  }
  return array
}
插入排序

原理:從數(shù)組的第二個(gè)和第一個(gè)比較,如果小于第一個(gè)則插入到第一個(gè)元素之前,否則不變
第三個(gè)一次和第二個(gè)第一個(gè)比,如果小于第二個(gè)且大于第一個(gè)則插入第二個(gè)元素之前

let arr = [33, 1, 46, 23, 35, 12, 30, 4, 16, 2]
function insertionSort(arr) {
  var len = arr.length
  var preIndex, current
  for (var i = 1; i < len; i++) {
    preIndex = i - 1
    current = arr[i]
    while (preIndex >= 0 && arr[preIndex] > current) {
      arr[preIndex + 1] = arr[preIndex]
      preIndex--
    }
    arr[preIndex + 1] = current
  }
  return arr
}
選擇排序

原理:從數(shù)組的第一個(gè)開(kāi)始,向后比較,找到最小的和第一個(gè)交換

let arr = [33, 1, 46, 23, 35, 12, 30, 4, 16, 2]
function selectionSort(arr) {
  var len = arr.length
  var minIndex, temp
  for (var i = 0; i < len; i++) {
    minIndex = i
    for (var j = i + 1; j < len; j++) {
      if (arr[minIndex] > arr[j]) {
        minIndex = j
      }
    }
    temp = arr[i]
    arr[i] = arr[minIndex]
    arr[minIndex] = temp
  }
  return arr
}
算法復(fù)雜度
排序方法 時(shí)間復(fù)雜度(最壞) 時(shí)間復(fù)雜度(最好) 空間復(fù)雜度 穩(wěn)定性 復(fù)雜性
冒泡排序 O(n^2) O(n) O(1) 穩(wěn)定 簡(jiǎn)單
插入排序 O(n^2) O(n) O(1) 穩(wěn)定 簡(jiǎn)單
選擇排序 O(n^2) O(n^2) O(1) 不穩(wěn)定 簡(jiǎn)單
參考

前端你應(yīng)該了解的數(shù)據(jù)結(jié)構(gòu)與算法

如何理解時(shí)間復(fù)雜度和空間復(fù)雜度 3. 時(shí)間復(fù)雜度和空間復(fù)雜度

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/101815.html

相關(guān)文章

  • 平時(shí)積累前端資源,持續(xù)更新。。。

    本文收集學(xué)習(xí)過(guò)程中使用到的資源。 持續(xù)更新中…… 項(xiàng)目地址 https://github.com/abc-club/f... 目錄 vue react react-native Weex typescript Taro nodejs 常用庫(kù) css js es6 移動(dòng)端 微信公眾號(hào) 小程序 webpack GraphQL 性能與監(jiān)控 高質(zhì)文章 趨勢(shì) 動(dòng)效 數(shù)據(jù)結(jié)構(gòu)與算法 js core 代碼規(guī)范...

    acrazing 評(píng)論0 收藏0
  • 前端面試題收集,持續(xù)更新

    摘要:對(duì)于所訪問(wèn)的每個(gè)元素,函數(shù)應(yīng)該將該元素傳遞給所提供的回調(diào)函數(shù)。 HTML 在線閱讀Github地址 題目列表 HTML HTML和XHTML的區(qū)別 Html的語(yǔ)義化 Doctype的文檔類型 cookie、sessionSttorage、localStory區(qū)別 HTML全局屬性(global attribute)有哪些? 常見(jiàn)的瀏覽器內(nèi)核有哪些? 介紹一下你對(duì)瀏覽器內(nèi)核的理解?...

    kgbook 評(píng)論0 收藏0
  • 前端面試題收集,持續(xù)更新

    摘要:對(duì)于所訪問(wèn)的每個(gè)元素,函數(shù)應(yīng)該將該元素傳遞給所提供的回調(diào)函數(shù)。 HTML 在線閱讀Github地址 題目列表 HTML HTML和XHTML的區(qū)別 Html的語(yǔ)義化 Doctype的文檔類型 cookie、sessionSttorage、localStory區(qū)別 HTML全局屬性(global attribute)有哪些? 常見(jiàn)的瀏覽器內(nèi)核有哪些? 介紹一下你對(duì)瀏覽器內(nèi)核的理解?...

    2json 評(píng)論0 收藏0
  • 前端面試題收集,持續(xù)更新

    摘要:對(duì)于所訪問(wèn)的每個(gè)元素,函數(shù)應(yīng)該將該元素傳遞給所提供的回調(diào)函數(shù)。 HTML 在線閱讀Github地址 題目列表 HTML HTML和XHTML的區(qū)別 Html的語(yǔ)義化 Doctype的文檔類型 cookie、sessionSttorage、localStory區(qū)別 HTML全局屬性(global attribute)有哪些? 常見(jiàn)的瀏覽器內(nèi)核有哪些? 介紹一下你對(duì)瀏覽器內(nèi)核的理解?...

    adam1q84 評(píng)論0 收藏0
  • 校招社招必備核心前端面試問(wèn)題詳細(xì)解答

    摘要:本文總結(jié)了前端老司機(jī)經(jīng)常問(wèn)題的一些問(wèn)題并結(jié)合個(gè)人總結(jié)給出了比較詳盡的答案。網(wǎng)易阿里騰訊校招社招必備知識(shí)點(diǎn)。此外還有網(wǎng)絡(luò)線程,定時(shí)器任務(wù)線程,文件系統(tǒng)處理線程等等。線程核心是引擎。主線程和工作線程之間的通知機(jī)制叫做事件循環(huán)。 showImg(https://segmentfault.com/img/bVbu4aB?w=300&h=208); 本文總結(jié)了前端老司機(jī)經(jīng)常問(wèn)題的一些問(wèn)題并結(jié)合個(gè)...

    jonh_felix 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<