/*冒泡排序初级版*/
public class BubbleSort
{
public static void bubbleSort(int[] array)
{
for(int i = 0; i < array.length-1; i++) //第i个数
{
for(int j = i + 1; j < array.length; j++) //第i+1个数
{
if(array[i] > array[j]) //如果前一个数大于后一个数,就进行交换
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
public static void main(String[] args)
{
int[] array = {1, 5, 2, 8, 7, 9}; //定义数组
BubbleSort.bubbleSort(array);
for(int i = 0; i < array.length; i++) //输出排序后的数
{
System.out.println(array[i]);
}
}
}
/*冒泡排序正宗版*/
public class BubbleSort2
{
public static void bubbleSort2(int[] array)
{
for(int i = 0; i < array.length-1; i++)//比较的趟数,n-1趟
{
for(int j = array.length; j >= i + 1; j--) //j从后往前循环
{
if(array[j-1] > array[j]) //j中前一个数和后一个数进行比较
{
int temp = array[j-1];
array[j-1] = array[j];
array[j] = temp;
}
}
}
}
public void main(String[] args)
{
int[] array = {1, 5, 2, 8, 7, 9}; //定义数组
BubbleSort.bubbleSort(array);
for(int i = 0; i < array.length; i++) //输出排序后的数
{
System.out.println(array[i]);
}
}
}
/*冒泡排序优化版*/
public class BubbleSort3
{
public static void bubbleSort3(int[] array)
{
boolean flag = true; //flag用来作为标记
for(int i = 0; i < array.length-1 && flag; i++) //如果flag为true则进入趟数的循环
{
flag = false; //初始化flag,设置其值为false
for(int j = array.length; j >= i + 1; j--)
{
if(array[j-i] > array[j])
{
int temp = array[j-1];
array[j-1] = array[j];
array[j] = temp;
flag = true; //若有数据交换,则flag为true
}
}
}
}
public static void main(String[] args)
{
int[] array = {1, 5, 2, 8, 7, 9}; //定义数组
BubbleSort.bubbleSort(array);
for(int i = 0; i < array.length; i++) //输出排序后的数
{
System.out.println(array[i]);
}
}
}
总结:冒泡排序的基本思想是两两比较待排序相邻记录的关键字,如果反序则交换,直到没有反序的为止。