美文网首页Java排序算法
Java排序算法 - 冒泡排序与优化

Java排序算法 - 冒泡排序与优化

作者: 守敬 | 来源:发表于2018-03-18 15:01 被阅读0次

冒泡排序

思路:相邻元素进行比较,每一次将最大的元素放到数组最后边,之后进行下一轮重复操作,把最大元素移动到第一次找出的最大元素的前面。

image

重复上图操作N-1次(数组长度为N),但是可以在比较过程中做优化。如下图所示:

image

设置一个flag值,每一次发生交换的时候,都记录交换的位置,下一轮比较只需要比较到上一轮结束后flag的位置。

原因:之后后面元素小于前面元素才发生交换,如果没有发生交换,则代表后方的序列已经是有序的了。

这样做的好处:例如对一个1000个元素的数组排序,后面900个元素已经有序了,如果每一轮都比较到最后,岂不是太浪费时间。所以记录flag值,只比较到最后一次交换的位置即可。


下面是完整代码:

public class BubbleSort {
    public static <T> void bubbleSort(T[] arr, Comparator<T> comparator){
        int flag = arr.length;
        while(flag > 0){
            int end = flag;
            flag = 0;
            for(int i = 1; i < end; i++){
                if(comparator.compare(arr[i-1], arr[i]) > 0){
                    T temp = arr[i];
                    arr[i] = arr[i-1];
                    arr[i-1] = temp;
                    flag = i;
                }
            }
        }
    }

    public static void main(String[] args) {
        Integer arr[] = {10,50,24,11,68,20,41,0,24,25,4,7,94,15,5,44,66};
        BubbleSort.bubbleSort(arr, new IntegerComparator());
        System.out.println(Arrays.toString(arr));
    }
}

相关文章

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • java 实现排序算法之「选择排序」

    java 实现排序算法系列 继冒泡排序算法之后,选择排序终于和大家见面了。为什么冒泡排序之后要说选择排序呢,是因为...

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • 算法-冒泡排序

    算 法:冒泡排序算法时间复杂度: 冒泡排序算法概述 冒泡排序伪代码 冒泡排序实现 冒泡排序算法概述 冒泡排...

  • 从0开始——排序

    0.排序的复杂度比较 1.冒泡排序 冒泡排序基础版本1 正宗冒泡排序优化版本 2.选择排序 3.插入排序算法 4....

  • Java排序算法 - 冒泡排序与优化

    冒泡排序 思路:相邻元素进行比较,每一次将最大的元素放到数组最后边,之后进行下一轮重复操作,把最大元素移动到第一次...

  • 双线程冒泡排序算法

    双线程冒泡排序算法是对冒泡排序的优化,对冒泡排序加入了另外一个线程。 冒泡排序可以从数组的第0个元素开始排列,同样...

  • 算法:冒泡排序

    本文内容:1、什么是冒泡排序?2、冒泡排序的 C/OC 实现与算法分析。 算法总目录:算法? 1、什么是冒泡排序?...

  • 前端算法学习-第一篇

    冒泡排序算法 冒泡排序算法是最慢的排序算法之一,也是最容易实现的排序算法。之所以叫冒泡排序是因为使用这种算法排序时...

网友评论

    本文标题:Java排序算法 - 冒泡排序与优化

    本文链接:https://www.haomeiwen.com/subject/xrveqftx.html