数组排序与去重

排序算法

冒泡排序

n个数进行排序
外层循环完成n-1次比较次数
内层循环完成数组元素两两进行比较

//将数组元素从小到大进行排序
var arr = new Array(22,44,11,33,77,66,55),//定义数组
    n = arr.length,
    temp // 数组元素交换的中间变量
for(var i = 0 ; i < n - 1 ; i++){//循环条件为n-1是判断总共只需要比较n-1轮
    for(var j = 0 ;  j < (n - 1 - i) ; j++ ){//循环条件是(n-1)-i是第一轮全部都要比较,得到最大的数,第二轮不需要比较最大的数,则比较次数-1,类推
        if(arr[j] > arr[j+1]){
            temp = arr[j+1]
            arr[j+1] = arr[j]
            arr[j] = temp
        }
    }
}

选择排序

思路:在未排序的剩余数组中找到最大(最小)值,将最大(最小)值与剩余数组第一位进行交换位置

//从大到小排列数组
var arr = [33,22,44,11,77,55,66],
    temp //中间变量

//外层循环遍历数组索引,方便后面进行交换,第一次循环将最大(最小)提到第一位,第二次循环将第二大值提到第二位,所以外层循环最好代表索引号
for(var i = 0 ; i < arr.length ; i++){
    //var i = maxIndex //假设索引i对应的数组值最大
    //内层循环遍历arr[i]后面的数并依次与arr[i]进行比较
    for(var j = i + 1 ; j < arr.length ; j++){
        if(arr[i] < arr[j]){
            temp = arr[i]
            arr[i] = arr[j]
            arr[j] = temp
        }
    }
    //temp = arr[maxIndex]
    //arr[maxIndex] = arr[j]
    //arr[j] = temp
    //两种交换都行,区别是if里面写可能会多交换几次
}

数组去重(待补充)

方法一:双重for循环遍历数组,比较值,重复的值截取出去(在原数组上改变)

var arr = [11,22,33,22,22,11,44,55,33]
//外层for循环代表遍历数组,依次找到第i个元素
for(var i = 0 ; i <arr.length ; i++){
    //内层循环代表遍历arr[i]后面的所有元素
    for(var j = i + 1 ; j< arr.length ; j++){
        if(arr[i] == arr[j]){
            arr.splice(j,1)
            j-- //如果这里不进行j--那么未截取之前的数组的第j+1位将会被漏判
        }
    }
}
console.log(arr)

方法二:新建一个新数组,使用indexOf判断新数组中是否有该元素,无则push

var arr = [11,22,33,22,22,11,44,55,33],
    newArr = [] //新数组为空
for(var i = 0 ; i < arr.length ; i++){
    //判断新数组中是否有原数组元素
    if(newArr.indexOf(arr[i]) == -1){
        //新数组中没有该元素,将该元素push到新数组中
        newArr.push(arr[i])
    }
}
console.log(newArr)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值