初学冒泡排序的理解

冒泡排序

先声明一个数组var arr = [10, 3, 5, 1, 4, 8];

一、分析

同一个数组的元素,两两比较arr[i]与arr[i+1],值比较大的就放到后面arr[i+1],
a[0]为10,a[1]为3,比较之后a[0]为3,a[1]为10
之后再将arr[i+1]与arr[i+2]比较,再将比较大的值放到arr[i+2],直到所有元素都比较完一轮,那么arr[arr.length]即10就是数组里面的最大值
此时的结果为arr=[3,5,1,4,8,10],因为是两两进行比较所以共比较了arr.length-1次(5次)
但是最大值前面的数值并没有按从小到大的顺序排列,因此还需要再将这些值进行排序,此时最大值已经被排到了最后,因此还需要比较arr.length-2次(4次)
直到最后只剩下两个元素的比较,只比较1次 arr.length-(arr.length-1)
这样可以得出共比较了5轮(arr.length-1),每轮分别比较5,4,3,2,1次(arr.length-轮次数)

二、写表达式

这样可以通过循环来表达

for (var i = 1; i < arr.length; i++) {
  //i为循环轮数
  for (var j = 0; j < arr.length - i; j++) {
    // j为当前元素,每轮比较次数(arr.length-轮次数)
    if (arr[j] > arr[j + 1]) {
      var m = arr[j]; //定义一个变量承接比较大的值
      arr[j] = arr[j + 1]; //将比较小的值放在左边
      arr[j + 1] = m; //比较大的值放到右边
    }
  }
}
三、输出结果
console.log(arr);

最后排序结果为:
[ 1, 3, 4, 5, 8, 10 ]

四、思考

如果需要倒序排列,需要怎么操作?同学们

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值