冒泡排序思想及代码实现

冒泡排序基本思想

1、每次将相邻两个数比较,如果第一个大于第二个数,则交换这两个数,否则不变。
2、如果有n个数,则要进行n-1趟比较。
3、在第一趟比较中要进行n-1次两两比较,则第一趟下来最后一个数是最大的,不用参与接下来的比较,于是在第二趟比较中要进行n-2次比较,…,在第j趟比较中要进行n-j次两两比较。

在这里插入图片描述
该排序算法的时间复杂度为O(n2)。

从小到大排序

示例:将数组中元素从小到大输出

var a = [10, 7, 5, 27, 98, 31]; // 定义一个数组
console.log("排序前:", a); // 输出排序前的数组
// 冒泡排序
for (var i = 0; i < a.length; i++) { // 外循环,控制比较的轮次(趟数)
    for (var j = 0; j < a.length - i - 1; j++) { // 内循环:进行数据的比较,小数向前移动、大数向后移动
        if (a[j] > a[j + 1]) { // 如果前一个数大于后一个数,交换两个数,让小的数在前面
            var temp = a[j];//交换数据
            a[j] = a[j + 1];
            a[j + 1] = temp;
        }
    }
}
console.log("排序后:", a); // 输出排序后的数组

结果为:
在这里插入图片描述

从大到小排序

如果想让数据从大到小输出,只需要更改if语句中的条件为:a[j] < a[j + 1],代码如下:

var a = [10, 7, 5, 27, 98, 31]; // 定义一个数组
console.log("排序前:", a); // 输出排序前的数组
//冒泡排序
for (var i = 0; i < a.length; i++) { //外循环,控制比较的轮次(趟数)
    for (var j = 0; j < a.length - i - 1; j++) { //内循环:进行数据的比较,小数向前移动、大数向后移动
        if (a[j] < a[j + 1]) { // 如果前一个数小于后一个数,交换两个数,让大的数在前
            var temp = a[j]; //交换数据
            a[j] = a[j + 1];
            a[j + 1] = temp;
        }
    }
}
console.log("排序后:", a); // 输出排序后的数组

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值