冒泡排序是一种比较简单打排序算法,因为通过交换,每次把最大的值放到最后,像气泡一样冒出来,故而得名.
排序的规则:
数组a[n](n>1)
1.a[0]和a[1]比较,,如果a[0]大于a[1],交换a[0]和a[1]位置,直到a[n-1]和a[n]比较交换,筛选a[n]最大值
2.a[0]和a[1]比较,,如果a[0]大于a[1],交换a[0]和a[1]位置,直到a[n-2]和a[n-1]比较交换,筛选a[n-1]最大值
...
通过筛选,最终得到从小到大的数组
时间复杂度
最小的时间复杂度,假设数组本身就是正序排列,最小比较次数为n-1,移动次数0,所以最小的时间复杂度是O(n)
最大的时间复杂度,假设数组本身是逆序排列,最大比较次数n*(n-1)/2,最大的移动次数3n(n-1)/2,所以最大打时间复杂度是O(n^2)
java 代码实现
public static void sort(int[] a){
if((a==null)||(a.length==0))
return;
System.out.println("排序原始数组:"+Arrays.toString(a));
for(int i=a.length-1;i>0;i--)
{
for(int j=0;j<i;j++)
{
if(a[j+1]<a[j])
{
a[j+1]=a[j+1]^a[j];
a[j] = a[j+1]^a[j];
a[j+1]=a[j+1]^a[j];
}
}
System.out.println("第"+(a.length-i)+"次排序结果:"+Arrays.toString(a));
}
}
完整代码及测试下载