原理:首先找到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原理:将待排序的序列分为若干组,在每组内进行直接插入排序,以使整个序列基本有序,而后再对整个序列进行直接插入排序。