js数组排序(冒泡排序,双重for循环排序,sort方法排序)

一、冒泡排序(Bubble Sort),是计算机科学领域比较简单的排序算法

        原理:是相邻的两个数字进行比较,按照从小到大或从大到小的顺序进行交换,这样一趟过去后,最大或最小的只会被交换到数组的末尾,然后再进行下一轮对比,把最大或最小的值会被交换到数组的倒数第二位“以此类推数组,条件不满足结束循环对比结束。

代码案例展示:

 var arr = [1, 20, 3, 100,0,50];
    //对比多少圈
    for (var i = 0; i < arr.length; i++) {//比较几次
        //拿到arr数组中的数据
        for (var j = 0; j < arr.length - 1-i; j++) {
            //数组数据相邻的两个数进行比较”“判断哪个数比较大”
            if (arr[j] > arr[j + 1]) {
                //console.log(arr[j] + "-----------" + arr[j + 1]);
                //换值  谁大换后面去
                var temp = arr[j + 1]; //接受比较后的最小数3
                arr[j + 1] = arr[j];
                arr[j] = temp; 
            }
        }
    }
    console.log(arr);

二、双重for循环排序(通俗)

       原理:将第一位依次与后面的元素进行比较,得到最小火最大值,与第一位交换,再次拿第二位依次与后面的元素进行对比获取第二个最小火最大数,与第二位进行位置交换,重复执行,直到外层循环添加不满足交换完毕,排序完成。

代码案例展示:

var arr = [1,20,3,100,0,50];
    //拿到对比的数据
    for(var i = 0;i<arr.length-1;i++){
        //接收最小值
        var min = arr[i];
        //接收最小值的下标
        var minIndex = i;
        console.log(min+"======="+minIndex);
        //对比数据后面所有数据
        for(var j = i+1;j<arr.length;j++){
            //判断min是否是真正最小值
            if(min>arr[j]){
                //不是和对比的元素进行位置交换
                min = arr[j];
                minIndex = j;
            }
        }
        //真正的交换
        arr[minIndex] = arr[i]; 
        arr[i] = min;
    }
    console.log(arr);

三、sort()方法(便捷)

       原理:根据冒泡排序规则进行排序,两两对比,把最小或最大值交换到数组的末尾,根据返回值判断是否交换“若值大于0(y > x,则x和y进行位置交换),若值小于0(y < x,则x和y不进行位置交换).

代码案例展示:

 var arr = [1,20,3,100,0,50];
    //升序(从小到大)
    arr.sort((x,y)=>{
        return x - y;
    });
    //降序(从大到小)
    arr.sort((x,y)=>{
        return y - x;
    })
    //原理:两两对比,返回正值交换,返回负值/相同不交换。
    arr.sort((x,y)=>{
        if(x>y){
            return 1;//需要交换位置
        }else if(x<y){
            return -1;//不需要交换
        }else{
            return 0;//不交换
        }
    })
    console.log(arr);

                                                  对您有用的话,动动小手来个赞赞👍!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值