輸入:
? ? 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;
????????}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????}
????}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????}
}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????}