关于数组的那些事-数组排序

数组排序的方法一大堆,常见的数组排序算法有:

1.快速排序从给定的数据中,随机抽出一项,这项的左边放所有比它小的,右边放比它大的,然后再分别这两边执行上述操作,采用的是递归的思想,总结出来就是 实现一层,分别给两边递归,设置好出口);

2.插入排序在已经排好序的数组中插入到相应的位置,以从小到大排序为例,扫描已经排好序的片段的每一项,如大于,则继续往后,直到他小于一项时,将其插入到这项的前面);

3.冒泡排序一个个冒泡到最前端或者最后端,主要是通过两两依次比较,以升序为例,如果前一项比后一项大则交换顺序,一直比到最后一对);

4.选择排序将当前未确定块的min或者max取出来插到最前面或者后面


我这里分享的是插入排序

先介绍下我的做法:

从数组中每次取出一个数来跟在它之前的数字依次对比.
当这个数字比前面的数字都大时不作处理.
当这个数字遇到比它大的数字时,我们便将这个数字插入到比它大的那个数字前面.
以此思路我们便可以完成插入排序的做法. 

var arr=[5,45,31,122,54,22,124,83,0,23];
for (var i=1;i<arr.length;i++) {
for (var j=0;j<i;j++) {
if (arr[i] > arr[j]) {
}
else{
//此时第i项  比 第j项 小  ==> 要将第i项插入到第j项之前。
var sum=arr[i];//先存下需要进行移动的这个数,因为后面要进行删除操作
//从数组第i项arr[i]开始(splice方法的第一个参数包括第i项)移除1(splice的第二个参数)项。
arr.splice(i,1);
//splice方法会将数字sum插入到第j项之前。
//详细的splice使用方法介绍自己去了解,这里就不多解释了。
arr.splice(j,0,sum);
break;
}
}
}
document.write(arr);

如例子中所示:


当i=2时,将arr[2]与arr[j]对比。即将arr[2]依次与arr[0]、arr[1]对比。
arr[2]为31,此时的arr[2]比arr[0]大,但是比arr[1]小。
所以进入我们的else语句(此时i=2,j=1。)
先存下arr[i]这个数字,再将arr[i]这个数字从原数组中去除。
之后将去除的这个数字插入到数组的指定位置中去。
例:==>将arr[i](即arr[2])这个数字插入到arr[j](即arr[1])这个数组之前。
然后使用break跳出当前的这层for循环。

之后继续用for循环i来进行数组的排序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值