排序算法之—冒泡排序

来源:互联网 发布:淘宝客服的工资多少 编辑:程序博客网 时间:2024/05/11 20:38
冒泡排序 两层控制
  1. 两层循环作冒泡,外层轮数做比较,比较轮数多少次总数减一来控制
  2. 内层循环记次数,次数变化看轮数,每轮比较得一数,放在最后最值
    数,每轮要比多少次?比较总数要减一然后减掉外层去.

实现冒泡排序代码块如下

public static void bubbleSort(DataWrap[] data) {        System.out.println("开始排序");        int arrayLength = data.length;        for (int i = 0; i < arrayLength - 1; i++) {            boolean flag = false;            for (int j = 0; j < arrayLength - 1 - i; j++) {                if (data[j].compareTo(data[j + 1]) > 0) {                    DataWrap temp = data[j + 1];                    data[j + 1] = data[j];                    data[j] = temp;                    flag = true;                }            }            System.out.println(java.util.Arrays.toString(data));            if (!flag)                break;        }

创建测试数据类 如下:

public class DataWrap implements Comparable<DataWrap>{    int data;    String flag;    public DataWrap(int data,String flag){        this.data = data;        this.flag = flag;    }    public String toString(){        return data + flag;    }    //根据data实例变量来决定两个dataWrap的大小    @Override    public int compareTo(DataWrap dw) {        return this.data > dw.data? 1 : (this.data == dw.data? 0 : -1);    }}

主方法创建DataWrap类对象生成测试数据 并调用冒泡排序实现如下:

public static void main(String[] args) {        DataWrap[] data = { new DataWrap(9, ""), new DataWrap(-16, ""),                new DataWrap(21, "*"), new DataWrap(23, ""),                new DataWrap(-30, ""), new DataWrap(-49, ""),                new DataWrap(21, ""), new DataWrap(30, "*"),                new DataWrap(30, "")};        System.out.println("排序之前:\n" + java.util.Arrays.toString(data));        bubbleSort(data);        System.out.println("排序之后:\n" + java.util.Arrays.toString(data));    }
0 0
原创粉丝点击