目录
什么是冒泡排序?
算法步骤
举例说明
代码实现(java)
什么是冒泡排序?
冒泡排序(英语:Bubble sort)是一种简单的排序算法。由于在算法的执行过程中,较小的元素像是气泡般慢慢「浮」到数列的顶端,故叫做冒泡排序。
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
算法步骤
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
前后两两进行对比交换。排序一轮后保证一个数据有序。所以有i个数据需要i-1次排序。
举例说明
假设数组为1,5,9,2,4,3,8
第一次排序 1,5,9,2,4,3,8 (比较1和5,不换位)
1,5,9,2,4,3,8 (比较5和9,不换位)
1,5,2,9,4,3,8 (比较9和2,换位) 以此类推
1,5,2,4,9,3,8 1,5,2,4,3,9,8
1,5,2,4,3,8,9 (这是第一次的最终结果,通过第一次排序9是确定了位置)
同理进行第二次排序,
第二次排序 1,5,2,4,3,8,9
1,2,5,4,3,8,9
1,2,4,5,3,8,9 1,2,4,3,5,8,9 1,2,4,3,5,8,9
每次排序都可以确定一个位置,总共需要(n-1)次排序。
动图演示(菜鸟教程动图)
代码实现(java)
public class bubble {public static void main(String[] args) {int[] a= new int[]{1,5,9,2,4,3,8};for (int i=0;i<a.length;i++){for (int j = 0;j<a.length-1;j++){if(a[j]>a[j+1]){int temp = a[j+1];a[j+1]=a[j];a[j]=temp;}}}System.out.println(Arrays.toString(a));}
}