package com.japher.j2se.sort;
public class BubbleSort
{
public static void main(String [] arg)
{
int [] src;
src = createRandom(8,0,100);
sort(src);
}
/** 冒泡排序,每趟都依次比较左右两个,从第一个到最后一个,每趟都是,共N-1趟即可,因为最差情况下完全倒序也只需要N-1次*/
public static void sort(int [] src)
{
int temp;
for(int num = 0 ; num<src.length-1;num++)
{
for(int i = 0 ; i< src.length-1;i++)
{
if(src[i]>src[i+1])
{
temp = src[i+1];
src[i+1] = src[i];
src[i]= temp;
}
}
System.out.println("loop" + (num+1)+":");
for(int element : src)
{
System.out.print(element+" ");
}System.out.print("\n");
}
}
public static int[] createRandom(int num,int start,int end)
{
if(start >end)
{
System.out.println("end value is bigger than start");
return null;
}
int [] des = new int[num];
for(int i = 0 ; i<num ; )
{
des[i] = (int)Math.round(Math.random()*(end - start)+start);
System.out.print(des[i]+" ");
if( ++i%10 ==0)
{
System.out.print('\n');
}
}
return des ;
}
}
结果:
31 82 94 38 93 93 52 86
loop1:
31 82 38 93 93 52 86 94
loop2:
31 38 82 93 52 86 93 94
loop3:
31 38 82 52 86 93 93 94
loop4:
31 38 52 82 86 93 93 94
loop5:
31 38 52 82 86 93 93 94
loop6:
31 38 52 82 86 93 93 94
loop7:
31 38 52 82 86 93 93 94
最后一趟是最终结果
其实冒泡排序主要依赖的是这样一个共识:比方10个数的话,我进行9次整理就能把它完全排序好,每次整理都从头到尾交换相邻的大小不符的两个,9次下来完全排序好。