冒泡排序及其改进

来源:互联网 发布:java中方法的定义 编辑:程序博客网 时间:2024/06/05 16:01
import java.util.Arrays;/** * 冒泡排序的改进 * @author 13983 * */public class Mao {    public static void main(String[] args) {        int[] list1=new int[]{2,1,3,4,5,6,7,8,9};        int[] list2=new int[]{2,1,3,4,5,6,7,8,9};        //使用传统的冒泡排序        oldSort(list1);        System.out.println(Arrays.toString(list1));        //使用改进的冒泡排序        newSort(list2);        System.out.println(Arrays.toString(list2));    }    /*     * 传统排序的弊端:像对上面的数据进行排序{2,1,3,4,5,6,7,8,9},     * 在将1和2进行交换后数据已经是有序的了,所以后面的循环是在做无用功     */    private static void oldSort(int[] list) {        int count=0;        for(int i=0;i<list.length;i++){            for(int j=0;j<list.length-i-1;j++){                if(list[j]>list[j+1]){                    swap(list,j,j+1);                }                count++;            }        }        System.out.println("传统冒泡比较的次数:"+count);    }    private static void newSort(int[] list) {        int count=0;        boolean flag=true;   //是否有序标志        for(int i=0;i<list.length&&flag==true;i++){            for(int j=0;j<list.length-i-1;j++){                flag=false;                if(list[j]>list[j+1]){                    swap(list,j,j+1);                    flag=true;                }                count++;            }        }        System.out.println("改进冒泡比较的次数:"+count);    }    private static void swap(int[] list, int m, int n) {        int temp=0;        temp=list[m];        list[m]=list[n];        list[n]=temp;    }}

结果展示:
这里写图片描述