全网唯一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次,因为它至少会循环数组最大值的值得次数。

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

你可能感兴趣的:(js,javascript,html)