冒泡排序的实现:
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; }