冒泡排序算法

冒泡排序算法

  • 算法描述
  • 代码实现(js)
  • 优化


算法描述

原理:比较相邻的两个元素,将小的数据放前面,大的数据放后面

  1. 第一趟,首先比较第1个和第2个元素,小数在前大数在后,再比较第2个和第3个数,以此类推将最大的数滚动到最后一个位置

  2. 第二趟同理,将次大的数滚动到倒数第二个位置

 第n-1趟完成排序


代码实现(js)

  • 平均时间复杂度:O(n^2)
  • 空间复杂度:O(1) (用于交换)
function BubbleSort(arr)
{
     
    var len = arr.length;
    for(let i = 0; i < len-1; i++){
     
        for(let j = 0; j < len-i-1; j++){
     
            if(arr[j] > arr[j+1]){
     
                [arr[j], arr[j+1]] = [arr[j+1], arr[j]];
                /*
                temp = a[i];
			    a[i] = a[i + 1];
			    a[i + 1] = temp;
                */
            }
        }
    }
}

优化

有时不需要循环那么多遍数组已经冒泡成有序的了,可以设置一个标志来判断

function BubbleSort(arr)
{
     
    var len = arr.length;
    for(let i = 0; i < len-1; i++){
     
        var flag = 0;
        for(let j = 0; j < len-i-1; j++){
     
            if(arr[j] > arr[j+1]){
     
                [arr[j], arr[j+1]] = [arr[j+1], arr[j]];
                flag = 1;  //发生了交换
            }
        }
        if(flag == 0)  //一轮下来没有发送交换,已经有序
           return;
    }
}

参考:https://blog.csdn.net/lu_1079776757/article/details/80459370

你可能感兴趣的:(算法,算法,排序算法)