冒泡排序原理:
就是相邻的两个数字两两比较,如果前面的数大于后面的数那么他们两个就交换位置。
比如有一个无序的数组 int[] arrays = {1,5,2,4,9};
第一轮比较 数组下标 0 和 1 比较 1 小于 5 那么不动
再用下标 1 和 2 比较 5 大于 2 那么就交换位置 变成 {1,2,5,4,9}
再用下标 2 和 3比较 5 大于 4 那么和上面一样 两两互换位置 变成 {1,2,4,5,9}
这样就变成有序的一个有序的集合了。
具体代码如下
//定义一个方法就行
public int[] bubblindsorting(int[] arr) {
//开始编码,第一层循环是控制执行次数
for(int out = 0;out < arr.length - 1;out++) {
//第二层循环是循环数组下标两两比较
//为什么要减去外层循环次数(arr.length - 1 - out)主要是降低代码执行次数
for(int in = 0;in < arr.length - 1 - out;in++) {
//判断如果前面那个数大于后面那个数,那么他们就交换位置
if(arr[in] > arr[in + 1]) {
int var = arr[in] ; //定义一个中间常量
arr[in] = arr[in + 1];//交换 把小的值赋值给大的
arr[in+1] = var; //交换 把刚才的中间常量赋值给小的那个位置
}
}
}
return arr; //返回这个排好序的数组
}
//冒泡改进版
public int[] bubblindsorting(int[] arr) {
for(int out = 0;out < arr.length - 1;out++) {
boolean status = false ;//定义一个状态表示已经排好序了 false为没有排好序
for(int in = 0;in < arr.length - 1 - out;in++) {
if(arr[in] > arr[in + 1]) {
int var = arr[in] ; //定义一个中间常量
arr[in] = arr[in + 1];//交换 把小的值赋值给大的
arr[in+1] = var; //交换 把刚才的中间常量赋值给小的那个位置
status = true; //如果这一轮循环发送了交换,那么这个数组还是无序的
}
if(!status) {
break; //直接退出
}
}
}
return arr;
}