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

資訊專欄INFORMATION COLUMN

JavaScript時間復(fù)雜度和空間復(fù)雜度

3403771864 / 503人閱讀

  前言

  在JS是用來時間復(fù)雜度和空間復(fù)雜度,時間復(fù)雜度和空間復(fù)雜度是衡量一個算法是否優(yōu)秀的標(biāo)準(zhǔn),現(xiàn)在我們就來說手時間復(fù)雜度和空間復(fù)雜度。

  時間復(fù)雜度和空間復(fù)雜度是衡量一個算法是否優(yōu)秀的標(biāo)準(zhǔn),通常我們比較兩個算法時會用到以下兩種方法:

  預(yù)先估算:首先做出算法設(shè)計(jì),在去估算這個算法所需的時間復(fù)雜度和空間復(fù)雜度,兩者進(jìn)行比較,擇優(yōu)。

  事后統(tǒng)計(jì):寫一個可執(zhí)行程序/腳本用來表達(dá)兩個算法,交給計(jì)算機(jī)去執(zhí)行,分別記錄兩個算法所需要的時間復(fù)雜度和空間復(fù)雜度,然后兩個進(jìn)行比較,選擇更優(yōu)秀的那個。、

  通常情況下我們都會采用第一種方式進(jìn)行對比,因?yàn)榈诙N在不同環(huán)境、不同語言、不同計(jì)算機(jī)下的運(yùn)行結(jié)果是有差異的,而且第二種的工作量也要比第一種要大。

  時間復(fù)雜度

  所謂的時間復(fù)雜度就是用于定性描述算法所運(yùn)行需要花費(fèi)的時間,所謂的定性就是大概進(jìn)行描述一下運(yùn)行時間的趨勢,不會去具體到運(yùn)行需要多少秒;時間復(fù)雜度通常用大O來表示,例如O(1)、O(n)、O(logn)等。

  接下來我們通過具體的代碼來展示一下時間復(fù)雜度,這樣更方便去理解:

  O(1)

  let i = 0
  console.log(i)

  因?yàn)樵谶@個代碼中,這兩行代碼永遠(yuǎn)只執(zhí)行一次,所以時間復(fù)雜度是`O(1)`

  O(n)

  for (let i = 0; i < n; i++) {
  console.log(i)
  }

  在上面的代碼中,運(yùn)行時間取決與`n`,所以時間復(fù)雜度是`O(n)`。

  O(logn)

  let i = 1
  while (i < n) {
  console.log(i)
  i *= 2
  }

  如果是下面這種情況:

  let i = 0
  console.log(i)
  for (let i = 0; i < n; i++) {
  console.log(n)
  }

  它的時間復(fù)雜度是O(1) + O(n),它最終的時間復(fù)雜度是O(n),兩個時間復(fù)雜度相加的話一般會忽略較小的那個。

  如果是兩個時間復(fù)雜度相乘的話,例如下面這段代碼:

  for (let i = 0; i < n; i++) {
  for (let j = 0; j < n; j++) {
  console.log(j)
  }
  }

  這段代碼的時間復(fù)雜度是O(n^2),如果是相乘的話會將兩個時間復(fù)雜度進(jìn)行相乘。

  空間復(fù)雜度

  空間復(fù)雜度與時間復(fù)雜度差不多,表示的是算法在運(yùn)行過程中臨時占用存儲空間的大小的一個計(jì)量單位,

  現(xiàn)在我們來看一下幾個例子:

  O(1)

  let i = 0
  console.log(i)

  因?yàn)樵谶@個代碼中,僅僅定義了一個臨時變量,所以空間復(fù)雜度是`O(1)`

  O(n)

  const arr = []
  for (let i = 0; i < n; i++) {
  arr.push(i)
  }

  在上面的代碼中,主要想是用來聲明了一個數(shù)組,每循環(huán)一次都要往數(shù)組中存儲一個變量,所以時間復(fù)雜度是`O(n)`

  O(n^2)

  let i = 1
  while (i < n) {
  console.log(i)
  i *= 2
  }

  有關(guān)JavaScript時間復(fù)雜度和空間復(fù)雜度的相關(guān)內(nèi)容已講述完畢,希望你獲得更多知識。

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

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

相關(guān)文章

  • javascript系列】時間復(fù)雜度空間復(fù)雜度

    摘要:第三段,時間復(fù)雜度。五空間復(fù)雜度分析空間復(fù)雜度的話和時間復(fù)雜度類似推算。 一、前言 時間復(fù)雜度和空間復(fù)雜度,我們在大學(xué)里的算法與數(shù)據(jù)結(jié)構(gòu)課程中已經(jīng)學(xué)習(xí)過,這回根據(jù)項(xiàng)目工作中整理一下,這個估計(jì)只是一個粗略的估計(jì)分析,并不是一個準(zhǔn)確的估計(jì)分析。 1、學(xué)習(xí)時間復(fù)雜度和空間復(fù)雜度是很有必要的,這個屬于算法與數(shù)據(jù)結(jié)構(gòu)的范疇,學(xué)這個是為了解決代碼中的快和省的問題。這樣才能使你的代碼運(yùn)行效率更高,占...

    dcr309duan 評論0 收藏0
  • JavaScript中的算法(附10道面試常見算法題解決方法思路)

    摘要:中的算法附道面試常見算法題解決方法和思路關(guān)注每日一道面試題詳解面試過程通常從最初的電話面試開始,然后是現(xiàn)場面試,檢查編程技能和文化契合度。值得記住的數(shù)組方法有和。一個好的解決方案是使用內(nèi)置的方法。 JavaScript中的算法(附10道面試常見算法題解決方法和思路) 關(guān)注github每日一道面試題詳解 Introduction 面試過程通常從最初的電話面試開始,然后是現(xiàn)場面試,檢查編程...

    Cruise_Chan 評論0 收藏0
  • LeetCode 之 JavaScript 解答第一題 —— 兩數(shù)之(Two Sum)

    摘要:步驟遍歷數(shù)組數(shù)據(jù),將根據(jù)下標(biāo)和元素值存放到散列表中。目標(biāo)值減去數(shù)組元素差值并在散列表中查找。測試法三一遍哈希表算法思路遍歷目標(biāo)值減去數(shù)組元素的差值同時判斷該值在散列表中是否存在差值,如果存在,則返回否則將數(shù)據(jù)加入到散列表中。 Time:2019/4/1Title:Two SumDifficulty: simpleAuthor:小鹿 題目一:Two Sum Given an array ...

    k00baa 評論0 收藏0
  • JavaScript 數(shù)據(jù)結(jié)構(gòu)與算法之美 - 冒泡排序、插入排序、選擇排序

    摘要:之所以把冒泡排序選擇排序插入排序放在一起比較,是因?yàn)樗鼈兊钠骄鶗r間復(fù)雜度都為。其中,冒泡排序就是原地排序算法。所以冒泡排序是穩(wěn)定的排序算法。選擇排序思路選擇排序算法的實(shí)現(xiàn)思路有點(diǎn)類似插入排序,也分已排序區(qū)間和未排序區(qū)間。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 1. 前言 算法為王。 想學(xué)好前端,先練好內(nèi)功,...

    canger 評論0 收藏0
  • JavaScript 數(shù)據(jù)結(jié)構(gòu)與算法之美 - 十大經(jīng)典排序算法匯總

    摘要:筆者寫的數(shù)據(jù)結(jié)構(gòu)與算法之美系列用的語言是,旨在入門數(shù)據(jù)結(jié)構(gòu)與算法和方便以后復(fù)習(xí)。這應(yīng)該是目前較為簡單的十大經(jīng)典排序算法的文章講解了吧。比如原本在的前面,而,排序之后,在的后面十大經(jīng)典排序算法冒泡排序思想冒泡排序只會操作相鄰的兩個數(shù)據(jù)。 showImg(https://segmentfault.com/img/bVbvHet); 1. 前言 算法為王。想學(xué)好前端,先練好內(nèi)功,內(nèi)功不行,就...

    zsy888 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<