for(int end = array.length -1; end >0; end--){for(int begin =1; begin <= end; begin++){// if (array[begin] < array[begin - 1]) {if(cmp(begin, begin -1)<0){swap(begin, begin -1);}}}
优化-如果序列已经完全有序,可以提前终止冒泡排序
for(int end = array.length -1; end >0; end--){
boolean sorted=true;for(int begin =1; begin <= end; begin++){// if (array[begin] < array[begin - 1]) {if(cmp(begin, begin -1)<0){swap(begin, begin -1);sorted=false;}}if(sorted)break;}
优化-如果序列尾部已经局部有序,可以记录最后1次交换的位置,减少比较次数
for(int end = array.length -1; end >0; end--){
int sortedIndex =1;for(int begin =1; begin <= end; begin++){// if (array[begin] < array[begin - 1]) {if(cmp(begin, begin -1)<0){swap(begin, begin -1);
sortedIndex = begin;}}
end = sortedIndex;}
最终版本
publicint[]sortArray(int[] nums){for(int end = array.length -1; end >0; end--){int sortedIndex =1;for(int begin =1; begin <= end; begin++){// if (array[begin] < array[begin - 1]) {if(cmp(begin, begin -1)<0){swap(begin, begin -1);
sortedIndex = begin;}}
end = sortedIndex;}return nums;}
平均时间复杂度:O(n²),最好情况:O(n),最坏情况O(n²)空间复杂度:O(1)常规冒泡排序for (int end = array.length - 1; end > 0; end--) { for (int begin = 1; begin <= end; begin++) { // if (ar...