js冒泡排序

冒泡排序:

  • 比较相邻的元素,根据排序从小到大还是从大到小判断是否交换,一趟下来,有一个已排好序;如果遇到某一趟数据已经没有出现交换,说明已是有序数组,退出即可
  function bubble(arr){
    if(!(Array.isArray(arr))) {
      alert('数据类型有误,请传入数组');
      return;
    }
    if(arr.length === 0) {
      console.log('数组为空');
      return arr;
    }
    // count记录比较趟数
    let count=0;
    // 外层循环,控制趟数,每一次找到一个最大值
    for(var i=0;i<arr.length-1;i++){ // 比较趟数
    // 记录是否有交换,如果一趟比较下来没有交换说明已经是有序的了
      let isExchange = false; 
      // 内层循环,控制比较的次数,并且判断两个数的大小
      for(var j=0; j< arr.length-1-i;j++){
         // 如果前面的数大,放到后面(从小到大的冒泡排序)
        if(arr[j] > arr[j+1]){
          let temp = arr[j];
          arr[j] = arr[j+1];
          arr[j+1] = temp;
          isExchange = true;
        }
      }
      count++
      if(!isExchange) {
        break;
      }
    }
    console.log(count);
    return arr;
  }
  const tempArr = [1,3,2,5,7,5,9,8, 11,87,0];
  const returnArr = bubble(tempArr);
  console.log(returnArr , 'returnArr');
  console.log(tempArr, 'tempArr');

参考&感谢各路大神

冒泡
宝剑锋从磨砺出,梅花香自苦寒来。
原文地址:https://www.cnblogs.com/haimengqingyuan/p/15718552.html