java复习之冒泡排序
未优化情况下的写法
package learn;
import java.util.Arrays;
/**
* 冒泡排序,把最大的泡依次冒出去o.o
*/
public class MaoPaoSort {
public static void sort(int[] array){
boolean flag=false;
for(int i=array.length-1;i>=0;i--){
int temp=0;
for(int j=0;j<i;j++){
if(array[j]>array[j+1]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
public static void main(String[] args) {
int[] array={3,9,-1,10,-2};
sort(array);
System.out.println(Arrays.toString(array));
}
}
或者第一层正着来也可以
public static void sort2(int[] array){
boolean flag=false;
int temp=0;
for(int i=0;i<array.length-1;i++){
for(int j=0;j<array.length-1-i;j++){//本质都是从后向前退,每次最大的位置减一
if(array[j]>array[j+1]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
}
进行优化,消除多余的循环
public static void sort(int[] array){
boolean flag=false;
for(int i=array.length-1;i>0;i--){
int temp=0;
for(int j=0;j<i;j++){
if(array[j]>array[j+1]){
flag=true;
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
if(!flag){
return;
}else {
flag=false;
}
}
}
时间复杂度,去掉常数项,去掉低次项,去掉系数