原理:首先找到arr這個數組中的最大項 max(此處爲88),而後建立一個新的數組bucket,bucket數組長度爲max,而後for循環遍歷,在bucket的索引爲arr[i]的添加數據,能夠添加字符"water";而後建立一個新的空數組arr2;給數組arr2增長bucket數據。數組
代碼以下。bash
var arr = [19,8,47,34,78,95,64,22,50,88];
var max = Math.max.apply(false,arr);//找出arr數組中的最大值
var bucket = new Array(max);//建立水桶數組,給數組添加「water」字符
for(var i = 0;i<arr.length;i++){
bucket[arr[i]] = "water";
}
var arr2 = []; //建立一個空數組。
for(var i in bucket){ //遍歷讓bucket的選項添加到arr2數組中
arr2.push(parseInt(i))
}
console.log(arr2)複製代碼
生活原理:app
如上圖:五我的排隊,按高矮順序排;老師說更高的日後站,兩兩同窗相比較,ps(假設小明和小紅比,小明更高日後站,小張比小明高,他們位置不用換)第一次比較能夠排出班級第一高的人,第二次比較能夠找出第二高的人學習
js思路:找出數組中的最大值,排好序,接着排第二位,而後第三位。。。。。。。。spa
代碼以下複製代碼
生活原理:假設小明是最矮的;而後經過比較,發現二狗要比小明矮,就和小明換位置,兩兩比較,經過第一次比較能夠找出二狗是最矮的人,而後假設隊伍的第二我的是最矮的,讓他和剩下的人比較身高,依次找出其餘人的位置。3d
js思路:假想數組中的任意一個值是最小;而後經過比較兩兩比較,找出索引值,換位,而後賦值。code
生活原理:假設小張(中間位置)是最矮的,比小張矮的往小張左邊站,比小張高的往右邊站;而後左邊的人羣再次比較,右邊的人羣再次比較身高,最後左邊的人+小張+右邊的人就是高矮順序。
cdn
js原理:取數組的中間值,比較該值和其餘數組的值,大於放到right數組中,小於放在left數組中;而後遞歸繼續給數組排序blog
插入排序的原理比較好理解,就像玩鬥地主同樣,抽到第一張牌,以它爲中界值,比第一張牌小的往左邊放,比第一張大的往右邊放。第三張繼續往前面兩張插,依次插入全部的牌排序
js原理:以第一個爲基點,分別插入後面的值。
生活原理:假設一個班的人成績固定,智商註定了成績,這個班的人實施了班級互助,好比一個班級有10排,1排的和6排的人成爲學習小組,2排和7排成爲學習小組,依次類推,而後考試成績出來了,兩個學習小組之間互相比較,成績高的往前坐,成績差的日後坐(如今有個大概的排名了),而後再次考試,1排和3排成爲學習小組,2排和5排成爲學習小組(成績好壞與座位更加趨近了),再次考試,1排和2排是學習小組。3和4是學習小組,依次,再次考試,再次排位置,此時的位置和成績就是正相關了------------ps(委屈臉,不符合生活邏輯,強行解釋一波,這個老師怕傷害孩子自尊,因此採起了這樣的排法,哈哈,這就是保護孩子自尊的方法,滑稽臉.gif)
js原理:將待排序的序列分爲若干組,在每組內進行直接插入排序,以使整個序列基本有序,而後再對整個序列進行直接插入排序。