Java算法之冒泡排序

时间:2021-11-15 12:57:55

举例:要排序的数组  int[] arr={7,9,8,4,5,1,6,3,2,0};

从小到大排列:

/*
冒泡排序
*/
public class BubbleSort {
	public static void main(String[] args) {
		int[] arr={7,9,8,4,5,1,6,3,2,0};
		for(int i=0;i<arr.length-1;i++){//外层循环控制次数
			for(int j=0;j<arr.length-1-i;j++){//内层循环逐个比较(减1是为了防止a[j+1]出现数组访问越界)
				if(arr[j]>arr[j+1]){//从小到大排列,从大到小排列则改为<
					int temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}
			}
		}
		for(int b=0;b<arr.length;b++){//输出
		    System.out.println(arr[b]);
		}
	}
}

运行结果:

0
1
2
3
4
5
6
7
8
9
比较次数:

10个数,第一趟,比较9次,得到最大数。

剩下的9个数,比较8次,得到排第二位的数。

以此类推,最后比较1次,确定最后两个数大小。

故比较次数为1+2+3+,,,+9=45次。

故冒泡排序比较次数公式为:n(n-1)/2,其中,n是元素个数。