1、比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置。
2、每次比较,都会产生出一个最大,或者最小的数字。
3、下一轮则可以少一次排序
4、依次循环,直到结束
示例
public class BubbleSort{
public static void main(String[] args){
int[] a = {1,4,6,8,34,12,67,3,56};
int[] sort = sort(a)
System.out.print(Arrays.toString(sort))
}
public static int[] sort(int[] arr){
//声明个临时变量
int temp = 0;
//外层循环,判断循环多少次
for(int i = 0;i < arr.length -1; i++){
//内层循环,比较判断两个数,如果第一个数比第二个数大,交换位置
for(int j = 0; j < arr.length -1 -i; j++){
//大于号降序,小于号升序
if(arr[j+1] > arr[j]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
}
优化
public class BubbleSort{
public static void main(String[] args){
int[] a = {1,4,6,8,34,12,67,3,56};
int[] sort = sort(a)
System.out.print(Arrays.toString(sort))
}
public static int[] sort(int[] arr){
//声明个临时变量
int temp = 0;
//通过flag 标识位减少没有意义的比较
boolean flag = false;
//外层循环,判断循环多少次
for(int i = 0;i < arr.length -1; i++){
//内层循环,比较判断两个数,如果第一个数比第二个数大,交换位置
for(int j = 0; j < arr.length -1 -i; j++){
//大于号降序,小于号升序
if(arr[j+1] > arr[j]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
flag = true;
}
}
if(!flag){
break;
}
}
return arr;
}
}