全网唯一js数组排序方法(自创排序)

排序原理:首先找到数组中的最大值,从0开始每次加1(0,1,2,3,…,max)。然后判断数组中的数是否等于它,等于就丢到新数组,完成排序

此排序运用了一个取数组最大值的方法。如下

var max = Math.max.apply(null,arr)
 function zichuang(arr){ //参数是任意一个数组
        var max = Math.max.apply(null,arr); // 取数组最大值 别疑惑 这一步很简单(Math.max.apply()取数组最大值的方法)  
        // console.log(max)
        var newArr = []; // 创建一个新数组
        for(var i = 0; i <= max;i++){ // 第一层循环是从0开始到最大值max结束
            for(var j = 0;j < arr.length;j++){ // 第二层是遍历老数组
                if(arr[j] == i){
                    newArr.push(arr[j]) // 如果数组中有一个数等于第一层循环中的数 就往新数组中添加
                }
            }
        }
        return newArr
    }
    console.log(zichuang([4,2,1,6,3,8])) // 最后输出[1,2,3,4,6,8]

此排序缺点:循环次数过多,和计数排序的循环次数一样。就是如果数组是[1,1000]它还是会循环1000次,因为它至少会循环数组最大值的值得次数。

此排序优点:可以同时完成排序,去重,计数。

  • 22
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值