冒泡排序最好时间复杂度为n的代码修改
重点是加一个标识位
public void sort(int arr[]){
for (int i = 0; i < arr.length - 1; i++) {
for (int i1 = 0; i1 < arr.length; i1++) {
if(arr[i] > arr[i1]) {
swap(arr,i,i1);
}
}
}
}
优化后的代码
public void sort(int arr[]){
for (int i = 0; i < arr.length - 1; i++) {
boolean flag = false;
for (int i1 = 0; i1 < arr.length; i1++) {
if(arr[i] > arr[i1]) {
swap(arr,i,i1);
flag = true;
}
}
if(false == false) return;
}
}
代码优化的核心是增加一个标识位,在里层嵌套循环没有进行交换的时候退出程序
boolean flag = false;
初始时设置为FALSE,一次循环之后flag没有发生改变则结束代码。