摘要:算法原理插入排序是一種簡單直觀的排序算法。插入排序在實現上,通常采用排序,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。新元素插入當前位置。
算法原理
插入排序是一種簡單直觀的排序算法。它的工作原理非常類似于我們抓撲克牌。
對于未排序的數據(右手抓到的牌),在已排序序列(左后已經排好序的牌)中從后向前掃描,找到相應位置并插入。
插入排序在實現上,通常采用in-place排序,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。
具體算法描述如下(按從小到大排序):
從第一個元素開始,該元素可以認為已經被排序。
取出下一個元素,在已經排序的元素序列中從后向前掃描
如果該元素(已排序)大于新元素,將新元素移到下一位置(即位置調換,向前移動一個位置)。
重復步驟3,直到找到已排序的元素小于或等于新元素。即不在向前掃描。新元素插入當前位置。
重復步驟2——4。
具體算法描述如下(按從大到小排序):
從第一個元素開始,該元素可以認為已經被排序。
取出下一個元素,在已經排序的元素序列中從后向前掃描
如果該元素(已排序)小于新元素,將新元素移到下一位置(即位置調換,向前移動一個位置)。
重復步驟3,直到找到已排序的元素大于或等于新元素。即不在向前掃描。新元素插入當前位置。
重復步驟2——4。
代碼實現插入排序實現數組從小到大排序
function mintomax(par) { for (var i = 1; i < par.length; i++) { for (var j = i - 1; j >= 0; j--) { if (par[j + 1] < par[j]) { [par[j],par[j+1]]=[par[j+1],par[j]]; } else if (par[j + 1] >= par[j]) { break; } } } return par; } var arr = [11, 2, 3, 445, 7, 32, 71, 8, 94]; console.log(mintomax(arr));
插入排序實現數組從小到大排序while實現
function mintomax(par){ for(var i=1; i=0 && par[j]>par[j+1]){ [par[j],par[j+1]]=[par[j+1],par[j]]; j--; } } return par; } var arr = [11, 2, 3, 445, 7, 32, 71, 8, 94]; console.log(mintomax(arr));
插入排序實現數組從大到小排序
function maxtomin(par) { for (var i = 1; i < par.length; i++) { for (var j = i - 1; j >= 0; j--) { if (par[j + 1] > par[j]) { [par[j],par[j+1]]=[par[j+1],par[j]]; } else if (par[j + 1] <= par[j]) { break; } } } return par; } var arr = [11, 2, 3, 445, 7, 32, 71, 8, 94]; console.log(maxtomin(arr));
插入排序實現數組從大到小排序while實現
function maxtomin(par){ for(var i=1; i=0 && par[j] 按照父子平鋪順序排序
function datatotree(par) { for (var i = 1; i < par.length; i++) { for (var j = i-1; j >=0; j--) { var str1=par[j].GLZDXM+par[j].ZDXM_STDCODE; var str2=par[j+1].GLZDXM+par[j+1].ZDXM_STDCODE; if(par[j].GLZDXM==null){ str1=par[j].ZDXM_STDCODE; } if(data[j+1].GLZDXM==null){ str2=par[j+1].ZDXM_STDCODE; } if (str2 < str1) { [par[j],par[j+1]]=[par[j+1],par[j]]; }else if(str2 >= str1){ break; } } } return par; } var data = [{ ZDXM_STDCODE: "100101", ZDXM_STDNAME: "", FINA_YYSR: "", FINA_PGZHSY: "", FINA_SJZHSY: "", FINA_PGZHSYL: "", FINA_SJZHSYL: "", FINA_ZHSYLCE: "", FINA_SRJJL: "", FINA_JSSKL: "", FINA_HTE: "", GLZDXM: "1001", }, { ZDXM_STDCODE: "1001", ZDXM_STDNAME: "", FINA_YYSR: "", FINA_PGZHSY: "", FINA_SJZHSY: "", FINA_PGZHSYL: "", FINA_SJZHSYL: "", FINA_ZHSYLCE: "", FINA_SRJJL: "", FINA_JSSKL: "", FINA_HTE: "", GLZDXM: "", }, { ZDXM_STDCODE: "100102", ZDXM_STDNAME: "", FINA_YYSR: "", FINA_PGZHSY: "", FINA_SJZHSY: "", FINA_PGZHSYL: "", FINA_SJZHSYL: "", FINA_ZHSYLCE: "", FINA_SRJJL: "", FINA_JSSKL: "", FINA_HTE: "", GLZDXM: "1001", }, { ZDXM_STDCODE: "100201", ZDXM_STDNAME: "", FINA_YYSR: "", FINA_PGZHSY: "", FINA_SJZHSY: "", FINA_PGZHSYL: "", FINA_SJZHSYL: "", FINA_ZHSYLCE: "", FINA_SRJJL: "", FINA_JSSKL: "", FINA_HTE: "", GLZDXM: "1002", }, { ZDXM_STDCODE: "1002", ZDXM_STDNAME: "", FINA_YYSR: "", FINA_PGZHSY: "", FINA_SJZHSY: "", FINA_PGZHSYL: "", FINA_SJZHSYL: "", FINA_ZHSYLCE: "", FINA_SRJJL: "", FINA_JSSKL: "", FINA_HTE: "", GLZDXM: "", }, { ZDXM_STDCODE: "100202", ZDXM_STDNAME: "", FINA_YYSR: "", FINA_PGZHSY: "", FINA_SJZHSY: "", FINA_PGZHSYL: "", FINA_SJZHSYL: "", FINA_ZHSYLCE: "", FINA_SRJJL: "", FINA_JSSKL: "", FINA_HTE: "", GLZDXM: "1002", }, ] console.log(datatotree(data));上面代碼排序之后結果
在線動畫演示插入、選擇、冒泡、歸并、希爾、快速排序算法過程工具地址:http://tools.jb51.net/aidedde...
這個地址演示排序的過程非常不錯,可以好好研究。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/108148.html
摘要:之所以把冒泡排序選擇排序插入排序放在一起比較,是因為它們的平均時間復雜度都為。其中,冒泡排序就是原地排序算法。所以冒泡排序是穩(wěn)定的排序算法。選擇排序思路選擇排序算法的實現思路有點類似插入排序,也分已排序區(qū)間和未排序區(qū)間。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 1. 前言 算法為王。 想學好前端,先練好內功,...
摘要:常見的內部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數排序等。插入排序在實現上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數排序等。用一張圖概括: showImg(https://segm...
摘要:常見的內部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數排序等。插入排序在實現上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數排序等。用一張圖概括: showImg(https://segm...
摘要:常見的內部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數排序等。插入排序在實現上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數排序等。用一張圖概括: showImg(https://segm...
摘要:代碼實現六堆排序算法簡介堆排序是指利用堆這種數據結構所設計的一種排序算法。九計數排序算法簡介計數排序是一種穩(wěn)定的排序算法。計數排序不是比較排序,排序的速度快于任何比較排序算法。 贊助我以寫出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 1、插入排序 1)算法簡介 插入排序(Insertion-Sort)的算法描述是一種簡單直觀的排序算法。它...
摘要:實現插入排序插入排序是一種非常簡單的算法,最適合大部分已經被排好序的數據。由此才有了這個名字插入排序。插入排序的最壞情況是輸入的數組是按逆序排序的。總結當輸入的數組已經大部分被排好序時,插入排序的效果最佳。 翻譯:瘋狂的技術宅https://medium.com/@jimrottin... 本文首發(fā)微信公眾號:前端先鋒歡迎關注,每天都給你推送新鮮的前端技術文章 插入排序的工作原理...
閱讀 3640·2023-04-26 02:07
閱讀 3150·2021-09-22 15:55
閱讀 2534·2021-07-26 23:38
閱讀 3119·2019-08-29 15:16
閱讀 2008·2019-08-29 11:16
閱讀 1746·2019-08-29 11:00
閱讀 3583·2019-08-26 18:36
閱讀 3165·2019-08-26 13:32