JS—冒泡排序&选择排序

冒泡排序

原理:相邻的两个数作比较,前者比后者大就调换位置,依次类推,直到所有数字都升序排列。每一轮循环都会找到当前循环的最大值放在数组的最后面。

		/* 随便定义一个数组 */
        var arr = [2, 8, 5, 23, 6, 3, 66, 31];
        /* n个数字只需要比较n-1次 */
        for (var i = 0; i < arr.length - 1; i++) {
        	/* 用 arr[j]>arr[j+1] 在比较倒数第二位的时候已经获取到了倒数第一位,所以循环次数可以减
        	一次,而且每轮循环都会找出一个最大值,所以当前循环找到的最大值在下一轮可以不参与比较 */
            for (var j = 0; j < arr.length - 1 - i; j++) {
            /* 当前位和下一位比较,若前者比后者大就调换位置 */
                if (arr[j] > arr[j + 1]) {
                /* 定义一个中间变量当中间存储容器 */
                    var middle = 0;
                    middle = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = middle;
                }
            }
        } 
        console.log(arr);

选择排序

原理:定义一个容器来装最小值的下标,默认从第一位开始,依次向后寻找,一次循环之后会找出一个最小数放在数组的开头。

		/* 随便定义一个数组 */
        var arr = [2, 8, 5, 23, 6, 3, 66, 31];
         /* n个数字只需要比较n-1次 */
        for (var i = 0; i < arr.length - 1; i++) {
            /* min用来装最小数的下标,默认第一位为最小数 */
            var min = i;
            /* 起始位置为min的后一位,与arr[min]比较 */
            for (var j = i + 1; j < arr.length; j++) {
                /* 如果找到了新的最小的数,就让min存该数的下标 */
                if (arr[min] > arr[j]) {
                    min = j;
                }
            }
            /* 如果min不是当前循环的第一位的下标,就交换第一位数和当前下标为min的数 */
            if (min != i) {
                var middle = 0;
                middle = arr[min];
                arr[min] = arr[i];
                arr[i] = middle;
            }
        }
        console.log(arr);

总结:选择排序相比冒泡排序效率更高一点,因为不用每次判断就触发条件交换数值,而是等一次循环完再交换数值,省去交换数值的过程。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值