一、冒泡排序原理
从第一个元素开始,比较相邻元素的大小,若大小顺序有误,则对调后再进行下一行元素的比较,如此扫描过一次之后就可以确保最后一个元素位于正确的顺序,接着再逐步进行第二次扫描,直到完成所有元素的排序关系为止。下面以10、5、30、15、6等5位数进行图形演示。
代码:
public class Sort {
//定义排序的数组并给予赋值
private static Integer[] nums = {10,5,30,15,6};
//定义扫描次数
private static Integer number = 1;
//冒泡排序
public static void Bubble_sort(){
System.out.println("---冒泡排序---");
//外层循环控制扫描总次数
for (int i = 1;i <= nums.length-1;i++){
//判断是否排好序,解决空转问题
boolean flag = false;
//内层循环进行排序
for (int j = 0;j < nums.length - 1;j++){
//如果前一位数比后一位数大则进行交换
if (nums[j] > nums[j+1]){
Integer tmp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = tmp;
flag = true;
}
}
//当decide=flase时证明排序完成,则退出循环。
if (flag==false){
//恢复number初始值
number = 1;
//跳出循环
break;
}else {
//打印每次扫描后的结果
print();
}
}
//恢复number初始值
number = 1;
}
public static void print(){
System.out.print("第"+number+"次扫描后的排序:");
number ++;
for (int n = 0;n < nums.length;n++){
System.out.print(nums[n]+"\t");
}
System.out.println();
}
public static void main(String[] args) {
//冒泡排序测试
Bubble_sort();
}
}
运行结果截图