什么是冒泡排序算法

97 阅读1分钟

依次比较相邻的两个数,将小数放在前面,大数放在后面(相反也可以)。即在第一趟: 首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。 冒泡排序流程至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。 例如代码:

`public class Array_BubbleSort {

public static void main(String[] args) {
   int[] arr = {9,8,5,4,2,0};		
	/*
	 *  趟i:  1,2,3,... arr.length-1
	 *  
	 *  每趟次数 j:   
	 *			 i=1  j=5(0,1,2,3,4)
	 *           i=2  j=4(0,1,2,3)
	 *           i=3  j=3
	 *  找到i和j的关系
	 *           j=arr.length-i-1
	 * 
	 * */
	for(int i=1;i<arr.length;i++)//趟
	{
		for(int j=0;j<arr.length-i;j++)//次
		{
			if(arr[j]>arr[j+1])
			{
				//交换位置
				int tmp = arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=tmp;
			}
		}
	}	
	//打印数组
	for(int i=0; i<arr.length;i++)
	{
		System.out.println(arr[i]);
	}
}

}`