冒泡排序的实现:

1. 如果数组不存在或者数组长度小于2直接return

2. 使用第一个for循环界定排序的范围,每一轮循环过后,数组中最大的那个数组一定会被放在最后一个,所以在下一轮进行比较时,应该排除最后一个值

2. 使用第二层for循环,遍历在第一层循环中界定范围的数组,比较当前元素和下一个元素的大小,如果当前元素大就交换

 

冒泡排序的时间复杂度

1. 平均时间复杂度

O(N^2);

2. 最坏时间复杂度

O(N^2)

3. 最好时间复杂度

O(N)

 

js实现

一:

function bubbleSort(arr) {
   if(arr === null || arr.length <2) return
   for(let end = arr.length -1; end > 0;  end--){
       for(let i=0; i< end; i++){
            if(arr[i] > arr[i+1]){
                  swap(arr,i ,i+1)  
             }
       }
    }
}


function swap(arr, i, j){
    let temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
}

二:

function bubbleSort2(arr) {
     if(arr === null || arr.length < 2) return;
     for(let i=0; i < arr.length - 1; i++ ) {
           for(let j=0; j < arr.length-1-i; j++) {
                if(arr[j] > arr[j+1] {
                        swap(arr, j, j+1)
                 }
           }
     }
}


function swap(arr, i, j){
      let temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
}