冒泡排序的基本思想:两两比较待排序记录的关键字,发现两个记录的次序相反就进行交换,知道没有反序的记录为止。
下面是未改进的冒泡排序:
public class Bubble{
/**
*冒泡排序算法
*/
public static void main(String[] args){
int[] array={1,4,3,6,7,9,100,99};
for(int i = 1;i<array.length;i++){
for(int j = 0;j<array.length-i;j++){
int index=0;
if(array[j]>array[j+1]){
index=array[j];
array[j]=array[j+1];
array[j+1]=index;
}
}
}
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
}
改进之后的冒泡排序:
public class ImproveBubble
{
public static void main(String[] args)
{
int[] array={1,4,3,6,7,9,100,99};
boolean flag = true;
for(int i = 1;i<array.length&&flag;i++){
flag = false;
for(int j = 0;j<array.length-i;j++){
int index=0;
if(array[j]>array[j+1]){
index = array[j+1];
array[j+1]=array[j];
array[j]=index;
flag = true;
}
}
}
for(int i = 0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
}
改进的冒泡排序加了一个flag标志位,可以比较数据是否已经按照顺序排列完成,如果是则推出,否则继续进行冒泡排序。