冒泡排序是排序算法中最基础的排序算法;
原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换
package com.neuedu.java; public class BubbleSort { public static void main(String[] args) { int [] arr=new int[]{0,9,5,45,12,94,56,7}; BubbleSort(arr); for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+" "); } } /* *冒泡排序算法 */ public static void BubbleSort(int [] a){ int count=0; int length=a.length; for(int i= 0 ;i<length-1;i++){ for(int j=length-2;j>=i;j--){ if(a[j+1]<a[j]){ int tem=a[j+1]; a[j+1]=a[j]; a[j]=tem; } count++; } } System.out.println("总循环次数:"+count); } }
如果待排序数组已经有序,用上面的算法会再完全比较一遍,我们还可以进行改进,也就是当检测到数组已经有序的时候就可以停止了
冒泡排序的优化
package com.neuedu.java; public class BubbleSort { public static void main(String[] args) { int [] arr=new int[]{0,9,5,45,12,94,56,7}; BubbleSort(arr); for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+" "); } } /* *冒泡排序算法的优化 */ public static void BubbleSort(int [] a){ int count=0; //记录循环次数 int length=a.length; boolean flag=true; //设置一个标记,判断数组是否已经有序 for(int i= 0 ;i<length-1 &&flag ;i++){//数组不有序,继续循环 flag=false; //初始值为false for(int j=length-2;j>=i;j--){ if(a[j+1]<a[j]){ int tem=a[j+1]; a[j+1]=a[j]; a[j]=tem; flag=true; //进行数据交换,说明还不是有序数组 } count++; } } System.out.println("总循环次数:"+count); } }转载于:https://www.cnblogs.com/Actexpler-S/p/7530809.html
相关资源:PHP排序算法之冒泡排序(Bubble Sort)实现方法详解