冒泡排序的实现原理和过程
假设有一个数组
int[] a = {29,10,14,37,14,25,3,1}
冒泡排序是从a[0]开始从左到右进行比较,如果左边的数大于右边的数,便把这两个数进行交换,这样一来,每一次比较到最后一个元素时,交换到最后的,就是之前没有被交换的元素中最大的元素
例如我上面的这个例子,每一趟的排序结果就是如下所示
第一趟:10,14,29,14,25,3,1,37
第二趟:10,14,14,25,3,1,29,37
第三趟:10,14,14,3,1,25,29,37
第四趟:10,14,3,1,14,25,29,37
第五趟:10,3,1,14,14,25,29,37
第六趟:3,1,10,14,14,25,29,37
第七趟:1,3,10,14,14,25,29,37
第八趟:1,3,10,14,14,25,29,37
排序结束
下面我将附上代码和一个小动画便于理解,可以单步调试多看几遍
动画演示
冒泡排序
代码实现
public class BubSort {
/*冒泡排序*/
public static void main(String[] args) {
int[] bubsort = {29,10,14,37,14,25,3,1};
int swap;
boolean swapped = false;
int swappedcount = 0;
int k = 0;
do
{
swapped = false;
for (int i = 0; i < bubsort.length-1; i++)
{
if (bubsort[i]>bubsort[i+1])
{
swap = bubsort[i+1];
bubsort[i+1] = bubsort[i];
bubsort[i] = swap;
swapped = true;
++swappedcount;
}
}
++k;
System.out.print("第"+k+"趟:");
for(int i = 0; i< bubsort.length;i++)
System.out.print(bubsort[i]+" ");
System.out.println();
} while (swapped ==true);
System.out.print("排序结果: ");
for(int i = 0; i< bubsort.length;i++)
System.out.print(bubsort[i]+" ");
}
}