摘要:參考冒泡排序典型的排序方法,命名來自魚呼吸時(shí)吹出的氣泡,上層的氣泡總是最大的。時(shí)間復(fù)雜度,屬于不穩(wěn)定的算法特殊情況下會(huì)是空間復(fù)雜度輔助空間是,所以空間復(fù)雜度為
參考lianjie
冒泡排序
典型的排序方法,命名來自魚呼吸時(shí)吹出的氣泡,上層的氣泡總是最大的。
思路:兩層循環(huán),內(nèi)層循環(huán)對(duì)比相鄰兩個(gè)數(shù)據(jù)(j,j+1),假設(shè)j > j + 1則交換元素位置。
外層循環(huán)為長度限制,在內(nèi)層第一次循環(huán)完成后減少長度1(因?yàn)樽詈笠粋€(gè)泡已經(jīng)固定,為這個(gè)數(shù)組的最大值)
function bubbleSort(arr){ for(let i = 0; i < arr.length - 1; i++){ let flag = false; for(let j = 0; j < arr.length - i - 1; j++){ if(arr[j] > arr[j + 1]){ let temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp;; flag = true; } } if(!flag){ break; } } return arr; }
加一個(gè)標(biāo)志位flag,如果沒有進(jìn)行交換,將標(biāo)志位置為false,表示排序完成。
時(shí)間復(fù)雜度O(n^2),最優(yōu)情況下是O(n)
空間復(fù)雜度O(1)
選擇排序
顧名思義,每次都選擇最小的,然后交換位置
思路:兩層循環(huán),內(nèi)層循環(huán)為選取第一個(gè)位置的值,然后將它與剩下的值作對(duì)比,得到比它小的則交換位置。外層循環(huán)為控制第一位值的固定(一次循環(huán)后,第一位則為該數(shù)組最小的值,下一次循環(huán)不必帶上)。
function selectionSort(arr){ for(let i = 0; i < arr.length - 1; i++){ let index = i; for(let j = i+1; j < arr.length; j++){ //判斷是否有小于當(dāng)前值,有則交換位置 if(arr[index] > arr[j]){ index = j; } } let temp = arr[i]; arr[i] = arr[index ]; arr[index] = temp; } return arr; }
時(shí)間復(fù)雜度:O(n^2),屬于不穩(wěn)定的算法(每次交換之后,它都改變了后續(xù)數(shù)組的順序)
空間復(fù)雜度:O(1)
快速排序
思路:二分法,先找一個(gè)基數(shù),分隔出以基數(shù)為界的左右兩個(gè)數(shù)組,然后遞歸重復(fù)這個(gè)步驟,直到分組剩余一個(gè)數(shù),則我們認(rèn)為已經(jīng)排列完成。
function quickSort(arr){ if(arr.length <= 1){ return arr; } let temp = arr[0]; const left = []; const right = []; for(var i = 1; i < arr.length; i++){ if(arr[i] > temp){ right.push(arr[i]); }else{ left.push(arr[i]); } } return quickSort(left).concat([temp], quickSort(right)); }
時(shí)間復(fù)雜度:O(n*logn),屬于不穩(wěn)定的算法,特殊情況下會(huì)是O(n^2)
空間復(fù)雜度:輔助空間是logn,所以空間復(fù)雜度為O(logn)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/109965.html
摘要:提供的圖表的確可以滿足大部分的需求,遵循了數(shù)據(jù)可視化的一些經(jīng)典范式。數(shù)據(jù)可視化已然成為了新的風(fēng)向標(biāo)。數(shù)據(jù)團(tuán)隊(duì)的前端要做的就是用最科學(xué)的方法向用戶展示最形象的圖表,而這,也是我們前行的目標(biāo)。 前言 也許很多人都會(huì)覺得奇怪,在這樣一個(gè)更多以后臺(tái)數(shù)據(jù)分析為主的公司,為什么需要一個(gè)專注于前端的團(tuán)隊(duì)?今天這篇文章就來講述那些年我們錯(cuò)過的前端數(shù)據(jù)可視化,以此來解答這個(gè)問題。 需求 那么,在我們的項(xiàng)...
摘要:到如今都沒有官方支持熱更新,這大概也是為了應(yīng)用不受蘋果審核條款的忌憚,一旦支持了熱更新,那在過審核的時(shí)候可能就會(huì)沒那么容易了,所以熱更新對(duì)于在平臺(tái)的存亡是一個(gè)重要因素。 再說風(fēng)險(xiǎn)1、和 react-native 、weex 、uni-app 、taro 等平臺(tái)不同,flutter framework 的大部分控...
摘要:超神經(jīng)新年里,人工智能領(lǐng)域的第一場口水戰(zhàn)已經(jīng)在打響,這次的主題是由媒體網(wǎng)站的一個(gè)失誤所引發(fā)的。這次親自上場撕的主人公是,雖然不如第一梯隊(duì)的幾位大佬著名,但她也是在機(jī)器學(xué)習(xí)領(lǐng)域里舉足輕重的人物。 By 超神經(jīng)2019 新年里,人工智能領(lǐng)域的第一場口水戰(zhàn)已經(jīng)在 Twitter 打響,這次的主題是由媒體網(wǎng)站 Venturebeat 的一個(gè)失誤所引發(fā)的。這場口水戰(zhàn)中,包括 Yann LeCun...
摘要:據(jù)統(tǒng)計(jì),編程語言排名前三。還是在知乎上,有好事之徒貼了兩個(gè)圖,我覺得頗為形象,在此與大家分享。上一篇右腦編程左腦是基礎(chǔ)之邏輯篇下一篇右腦編程法左腦是基礎(chǔ)回顧篇 前段時(shí)間出差了,所以沒有及時(shí)更新寫作內(nèi)容。幸好關(guān)注的人還不是特別多,我的壓力不算大,自我安慰一下下。 今天我們終于切到一個(gè)程序猿/媛職業(yè)中最基本,也是最重要的部分了,那就是編程語言。對(duì)于不會(huì)編程的人來說,這個(gè)部分是最為神秘的。...
摘要:據(jù)統(tǒng)計(jì),編程語言排名前三。還是在知乎上,有好事之徒貼了兩個(gè)圖,我覺得頗為形象,在此與大家分享。上一篇右腦編程左腦是基礎(chǔ)之邏輯篇下一篇右腦編程法左腦是基礎(chǔ)回顧篇 前段時(shí)間出差了,所以沒有及時(shí)更新寫作內(nèi)容。幸好關(guān)注的人還不是特別多,我的壓力不算大,自我安慰一下下。 今天我們終于切到一個(gè)程序猿/媛職業(yè)中最基本,也是最重要的部分了,那就是編程語言。對(duì)于不會(huì)編程的人來說,這個(gè)部分是最為神秘的。...
閱讀 1074·2021-11-19 09:40
閱讀 2213·2021-11-15 18:00
閱讀 1267·2021-10-18 13:34
閱讀 2248·2021-09-02 15:40
閱讀 1533·2019-08-30 14:01
閱讀 1113·2019-08-30 11:11
閱讀 2482·2019-08-29 15:26
閱讀 722·2019-08-29 14:15