冒泡排序介绍
冒泡排序基本思想:每一次将最大或者最小的数放在队列的最后面。假设数组a中存放了n个数据元素,循环进行n-1趟下列的排序过程:第一趟比较相邻的两个数据元素a[n]和a[n+1]的大小,如果a[n]>a[n+1],就交换两个数据元素,否则就不交换,这样最大的数据元素放在队列的最后边,即a[n-1]位置;第二趟时,数据元素个数减少1,按照第一趟的操作方式获得n个元素中的次大的数据元素放在a[n-2]中,以此类推,直到获得最小的数据元素将其放在a[0]中,排序结束。
冒泡排序演示过程如下:
初始数据元素:12 32 21 3 74
第一趟排序结果:12 21 3 32 【74】
第二趟排序结果:12 3 21 【32 74】
第三趟排序结果:3 12 【21 32 74】
第四趟排序结果:3 【12 21 32 74】
最终排序结果:3 12 21 32 74
算法实现
/** * 冒泡排序 * @param array * @param length */ private static void bubbleSort(int[] array, int length) { for(int i=array.length-1;i>0;i--){ for(int j=0;j array[j+1]){ //交换array[j]与array[j+1]位置 int temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } } } }
测试代码:
public class SelectSort{ public static void main(String[] args) { int[] array={12,32,21,3,74}; System.out.printf("排序前:"); //打印排序前数据元素 for(int i=0;i0;i--){ for(int j=0;j array[j+1]){ //交换array[j]与array[j+1]位置 int temp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } } } }
结果:
排序前:12 32 21 3 74 排序后:3 12 21 32 74