冒泡排序的基本思想:通过对待排序序列从前向后,依次比较相邻元素的排序码
*若发现逆序则交换,使排序码较大的元素逐渐从前部移动到后部。(大多注释在代码里)
package com.atcording.java;
/*
* 数组的冒泡排序的实现
* 冒泡排序的基本思想:通过对待排序序列从前向后,依次比较相邻元素的排序码
* 若发现逆序则交换,使排序码较大的元素逐渐从前部移动到后部。
*/
public class BubbleSort {
public static void main(String[] args){
int[] arr=new int[]{2,450,63,12,78,92,438,-32,21,79};//定义一个无序数组待排序;
/*
* 设置两层循环,内层循环每循环一次找出参与循环的最大的数排列在最后位置,
* 第第二次循环找出次最大的数排列在倒数第二的位置,依次类推,外层循环的目的是确保
* 内层循环进行的次数(例如十个数字进行从小到大排序,内层循环每执行一次找出一个最大的数字排在最后,
* 第二次循环找出次最大的数排列在倒数第二的位置,依次类推,要排出十个数字的大小需要进行就此内层循环
* 所以i<arr.length指内层的循环要进行arr.length-1次,arr.length是指获取数组arr的长度为10)
*/
for(int i=0;i<arr.length;i++){//i<arr.length指内层的循环要进行arr.length-1次
for( int j=0;j<arr.length-1;j++){
if(arr[j]>arr[j+1]){
//相邻两数比较,如果前面的数大于后面的数则交换位置
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
//内循环每进行一次输出一次结果,便于观察,可注释掉
System.out.print("内层循环进行第"+(i+1)+"轮的结果如下");
System.out.println();//换行
for(int b=0;b<arr.length;b++){
System.out.print(arr[b]+" ");
}
System.out.println();//换行
}
//输出最后结果
System.out.print("最终结果如下:");
System.out.println();//换行
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
}
运行结果如下图所示,通过内层循环进行的每一轮的输出结果便于观察其原理