摘要:插入排序的過程就是將待插元素一個個插入初始有序部分的過程。而直接插入排序就是把未排序的序列里的第一位數與前面的有序數列進行比較,凡是比它大的都向后移動一位,直到找到正確的位置進行交換。
1.前言
從上大學開始,算法與數據結構這東西我是一直心心念念,奈何又懶又蠢,這么基礎科目一直沒啥成效。但是如鯁在喉,如果再不學的話可能就成為一塊心病了。所以雖然和現在工作沒啥關系但還是決定學一下基礎,聊以自慰。
2.排序 2.1簡單選擇排序對于一個有n個元素的數組a(下標從0開始),進行n趟操作,每趟從待排部分[i,n)中i選擇i最小的元素,令其與a[i]進行交互,總復雜度為O(n^2):
var a = [5, 2, 4, 6, 3, 1]; //select sort function selectSort(a) { var n = a.length; for (var i = 0; i < n; i++) {//n次操作,即所謂的趟 var k = i;//設最小值的下標為i console.log(i) for (var j = i + 1; j < n; j++) {//每趟待排序部分 if (a[j] < a[k]) {//若求倒序則改為> k = j;//更新最小值的下標 } } //交換 var temp = a[i]; a[i] = a[k]; a[k] = temp; } return a; } console.log(selectSort(a));2.2簡單插入排序
這里的插入排序指的是直接插入排序。插入排序的過程就是將待插元素一個個插入初始有序部分的過程。而直接插入排序就是把未排序的序列里的第一位數與前面的有序數列進行比較,凡是比它大的都向后移動一位,直到找到正確的位置進行交換。
function insertSort(a){ var n=a.length; for(var i =1;i0&&temp 其實很像倒著來的冒泡排序
參考書目《算法筆記》
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/93826.html
摘要:今天同學去面試,做了兩道面試題全部做錯了,發過來給道典型的面試題前端掘金在界中,開發人員的需求量一直居高不下。 排序算法 -- JavaScript 標準參考教程(alpha) - 前端 - 掘金來自《JavaScript 標準參考教程(alpha)》,by 阮一峰 目錄 冒泡排序 簡介 算法實現 選擇排序 簡介 算法實現 ... 圖例詳解那道 setTimeout 與循環閉包的經典面...
摘要:插入排序插入排序應該算是最簡單和容易理解的排序算法。平均來說插入排序算法復雜度為。在最好的情況,冒泡排序需要次交換,而插入排序只要最多交換。因此很多現代的算法教科書避免使用冒泡排序,而用插入排序替換之。快速排序也是一種分治的遞歸算法。 計算的 時間復雜度(最差、平均、和最好性能),依據列表(list)的大小(n)。一般而言,好的性能是O(n log n),且壞的性能是O(n^2)。對于...
摘要:特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 本以為自己收藏的站點多,可以很快搞定,沒想到一入匯總深似海。還有很多不足&遺漏的地方,歡迎補充。有錯誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應和斧正,會及時更新,平時業務工作時也會不定期更...
摘要:上一篇數據結構與算法樹寫在前面這是學習數據結構與算法的最后一篇博客,也是在面試中常常會被問到的一部分內容排序和搜索。 上一篇:JS數據結構與算法_樹 寫在前面 這是《學習JavaScript數據結構與算法》的最后一篇博客,也是在面試中常常會被問到的一部分內容:排序和搜索。在這篇博客之前,我每每看到排序頭就是大的,心里想著類似冒泡排序,兩層遍歷啪啪啪就完事了,然后再也無心去深入研究排序相...
閱讀 2907·2021-11-15 18:02
閱讀 3801·2021-10-14 09:43
閱讀 3733·2021-09-08 10:41
閱讀 2522·2019-08-30 15:53
閱讀 1804·2019-08-30 14:14
閱讀 1943·2019-08-29 16:12
閱讀 3139·2019-08-29 14:03
閱讀 1280·2019-08-29 13:46