/*
冒泡排序:从前往后扫描数组,遇到逆序则交换--->小的会不断往前,大的不断往后
*/
public class BubbleSort {
static int count = 0;
public static void main(String[] args) {
BubbleSort bs = new BubbleSort();
int [] array = {1,4,2,3};
bs.bubbleSort(array);
bs.print(array);
}
public void bubbleSort(int [] array){
boolean flag = false;//是否发生过交换,是,则继续遍历排序,否则已经有序,直接返回
for(int i = 0; i < array.length; i++){
//注意:内层循环只需遍历到倒数第二个便停止,否则出现数组越界问题
for (int j = 0; j < array.length - 1; j++){
if(array[j] >= array[j + 1]){
flag = true;
count++;
int tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
}
}
if(!flag){
break;
}else{
flag = false;
}
}
}
public void print(int [] array){
for (int i = 0; i < array.length; i++) {
System.out.printf("%d ",array[i]);
}
System.out.println();
System.out.println(count);
}
}
冒泡排序算法及其优化
最新推荐文章于 2024-10-01 05:04:32 发布