java 12 -- 冒泡排序法

2019-10-29  本文已影响0人  半碗鱼汤

一、代码

        int []a={1,2,7,4,8,2,5};
        System.out.println("排序之前:");
        for (int i : a) {
            System.out.print(i+"\t");
        }

        //冒泡排序实现
        for(int i=0;i<a.length-1;i++){
            for(int j=0;j<a.length-i-1;j++){
                if(a[j]>a[j+1]){
                    int temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }
            }
        }

        System.out.println("\n排序之后:");
        for (int i : a) {
            System.out.print(i+"\t");
        }

二、使用场景

现在有一个 List ,里面的元素要根据时间从小到大排好序,当然时间可能为 null,如果为空,则放到最前,代码如下:

        List<String> list = new ArrayList<>();
        list.add("2016");
        list.add("2013");
        list.add("2015");
        list.add(null);
        list.add(null);
        list.add(null);
        list.add("2017");
        list.add("2018");
        list.add(null);
        list.add("2017");
        list.add("2011");
        list.add("2012");

        System.out.println("排序之前:");
        for (String i : list) {
            System.out.print(i + "\t");
        }

        DateFormat dateFormat = new SimpleDateFormat("yyyy");
        //冒泡排序实现
        for (int i = 0; i < list.size() - 1; i++) {
            for (int j = 0; j < list.size() - i - 1; j++) {

                String dateStr1 = list.get(j);
                String dateStr2 = list.get(j + 1);

                Date date1 = null;
                Date date2 = null;

                if (dateStr1 == null || "".equals(dateStr1)) {
                    dateStr1 = "0000";
                }
                if (dateStr2 == null || "".equals(dateStr2)) {
                    dateStr2 = "0000";
                }

                try {
                    date1 = dateFormat.parse(dateStr1);
                    date2 = dateFormat.parse(dateStr2);
                } catch (ParseException e) {
                    e.printStackTrace();
                }

                if (date1 != null && date2 != null) {
                    if (date1.getTime() > date2.getTime()) {
                        Collections.swap(list, j, j + 1);
                    }
                }
            }
        }

        System.out.println("\n排序之后:");
        for (String i : list) {
            System.out.print(i + "\t");
        }

其中的 Collections.swap(list, j, j + 1); 可以交换 List 中两个元素的位置

三、原理

比较数组中相邻两个元素,将大的或小的值交换到右端。

上一篇 下一篇

猜你喜欢

热点阅读