冒泡排序

本文深入讲解了冒泡排序算法的原理,包括其如何通过比较和交换元素实现排序,以及具体的实现代码示例。同时,文章还分析了冒泡排序的优点和缺点。

1冒泡排序的原理

这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),
  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个位置。
  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

arr{10,5,20,80,42,32};
  function arr1(arr) {        var len = arr.length;
   //外层循环,表示需要排序的次数,排序次数为数组length-1次,每次找到最小的数
for (var i = 0; i < len - 1; i++) { 
// 内层循环表示数组元素与其他元素交换的次数,交换次数与索引规律为 j=arr1.length-i-1;比较他们的大小;
 for (var j = 0; j < len - 1 - i; j++) {
// 使用if判断,相邻两个数组元素大小,设置中间变量temp来完成位置交换。      
if (arr[j] < arr[j + 1]) {                   
 var temp = arr[j]; //定义变量temp第一个元素                  
  arr[j] = arr[j + 1]; //  将arr[j+1]赋值给arr[j]   
   arr[j + 1] = temp;  //将原始的arr[j]值赋值给arr[j+1],完成arr[j]和arr[j+1]的数据互换     
     }            
     }        
     }       
      return arr;  
        }

代码执行

已知无序数据a[1],a[2],a[3],a[4],a[5],a[6]…a[n];按降序处理首先比较a[1],a[2]的值当a[2]大于a[1]交换位置否则不执行在比a[2],与a[3]的大小以此类推 处理一轮后则能获得一个最小值a[n];在对a[1]到a[n-1]进行循环;一直处理n-1轮后结束循环
外循环的次数是固定为length-1;即使在中间已经排好顺序旦循环仍会执行
直到循环结束
第一次循环结束结果为 10 20 80 42 32 5
第二次循环结束结果为20 80 42 32 10 5
第三次循环结束结果为80 42 32 20 10 5
第四次循环结束结果为80 42 32 20 10 5
第五次循环结束结果为80 42 32 20 10 5

冒泡排序的优缺点

优点:简单 稳定
缺点:慢每次只能移动两个数据的位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值