插入排序

輸入:

? ? n個(gè)數(shù)字組成的無序序列

輸出:

? ? 輸入序列的一個(gè)排列,該排列滿足某種要求。

算法原理分析:

? ? 從一個(gè)未排序的序列中,依次選出符合條件的元素(比如最小,最大)插入到一個(gè)新的空序列中,直到原來的序列中帶插入元素?cái)?shù)量為0。此時(shí)新的序列為有序序列。

? ? 在實(shí)際的算法中,很少創(chuàng)建新的序列,而是在比較之后,通過交換元素,把元素交換到待排序的序列的前端或后端或者某個(gè)指定位置。不斷重復(fù)這個(gè)過程,最終使原來的無序序列變?yōu)橛行蛐蛄小?/p>

圖解原理:


源代碼(Javascript實(shí)現(xiàn)):

var a = [7,9,95,8,11,54569,236,4124,32,8,9,55,42,16,30,25,31,5,48,32,584,656,321,458,21,559,55,884,2,84,3,3,4,84,8];

var b = [7,9,95,8,11,54569,236,4124,32,8,9,55,42,16,30,25,31,5,48,32,584,656,321,458,21,559,55,884,2,84,3,3,4,84,8];

//升序排列????????????????????????????????????????????????????????????//降序排列

for(var j = 1; j < a.length; j++){????????????????????????????for(var j = 1; j < a.length; j++){

????var i = j-1;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????var i = j-1;

????for( i ;i >0 || i == 0; i--){????????????????????????????????????????for(i;i >0 || i == 0; i--){

????????if(a[i + 1] < a[i]){????????????????????????????????????????????????????if(b[i + 1] > b[i]){

????????????var t = a[i+1];????????????????????????????????????????????????????????var t = b[i+1];

????????????a[i+1] = a[i];????????????????????????????????????????????????????????????b[i+1] = b[i];

????????????a[i] = t;????????????????????????????????????????????????????????????????????b[i] = t;

????????}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????}

????}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????}

}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容