JAVA-冒泡排序
直接上代码了
package 排序;
/**
* @author 邓雪松 (づ ̄ 3 ̄)づ)
* @create 2021-10-30-21-12
*/
public class 冒泡排序 {
public static void main(String[] args) {
int[] ints = new int[]{23,34,54,-324,2,1,1,98,1};
bubbleSort(ints);
for(int anInt:ints){
System.out.print(anInt+" ");
}
}
public static void bubbleSort(int[] arr){
//外层循环控制的是:冒泡的总的次数,比如5个元素只需4次
for (int i = 0; i < arr.length - 1; i++) {
//内层循环控制的是每次冒泡比较的次数比如5个元素第一次冒泡需比较4次,第二次需3次
for (int j = 0; j < arr.length-1-i; j++) {
//注意这里是arr[j]与arr[j+1] 比较
if(arr[j]>arr[j+1]){
int temp = arr[j];//大
arr[j]=arr[j+1];//小放前
arr[j+1]=temp;//大方后
}
}
}
}
}
运行结果
-324 1 1 1 2 23 34 54 98
冒泡优化
package 排序;
/**
* @author 邓雪松 (づ ̄ 3 ̄)づ)
* @create 2021-10-30-21-12
* 冒泡优化原理:如果再某一次冒泡排序过程中,没有交换元素,则说明该数组已经有序
*/
public class 冒泡排序 {
public static void main(String[] args) {
int[] ints = new int[]{1,2,5,3,4};
bubbleSort(ints);
for(int anInt:ints){
System.out.print(anInt+" ");
}
}
public static void bubbleSort(int[] arr){
//优化-默认为true
boolean flag = true;
//外层循环控制的是:冒泡的总的次数,比如5个元素只需4次
for (int i = 0; i < arr.length - 1; i++) {
//内层循环控制的是每次冒泡比较的次数比如5个元素第一次冒泡需比较4次,第二次需3次
for (int j = 0; j < arr.length-1-i; j++) {
//注意这里是arr[j]与arr[j+1] 比较
if(arr[j]>arr[j+1]){
flag = false;//代表数组还是无序的
int temp = arr[j];//大
arr[j]=arr[j+1];//小放前
arr[j+1]=temp;//大方后
}
}
//一旦flag为true则代表此时数组有序了就可以退出了
if(flag){
break;
}
}
}
}
结果
1 2 3 4 5