• 68685

    文章

  • 645

    评论

  • 65

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

Java实现几种常见排序方法——冒泡排序

撸了今年阿里、腾讯和美团的面试,我有一个重要发现.......>>

冒泡排序

比较相邻的元素。如果第一个比第二个小,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最小的数。 针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

第一种排序:

import java.util.Arrays;

public class BubbleSort1 {
    public static void sort(int[] numbers) {
        int size = numbers.length;
        for (int i = 1; i < size; i++) {
            for (int j = 0; j < size - i; j++) {
                if (numbers[j] > numbers[j + 1]) {
                    //交换两数的位置(用位异运算会快点)
                    numbers[j] ^= numbers[j + 1];
                    numbers[j + 1] ^= numbers[j];
                    numbers[j] ^= numbers[j + 1];
                }
            }
        }
    }

    public static void main(String[] args) {
        int[] numbers =new int[]{6,43,2,3};
        BubbleSort1.sort(numbers);
        Arrays.stream(numbers).forEach(System.out::println);
    }
}

第二种排序:

import java.util.Arrays;

public class BubbleSort2 {

    public static <T extends Comparable<T>> T[] sort(T[] array) {
        int last = array.length;
        boolean swap;
        do {
            swap = false;
            //每一次for循环就是把最大的值顶到数组末尾;
            //例如:{*,*,5,*} --> {*,*,*,5}
            for (int count = 0; count < last - 1; count++) {
                if (array[count].compareTo(array[count + 1]) > 0) {
                    //Swap
                    T temp = array[count];
                    array[count] = array[count + 1];
                    array[count + 1] = temp;
                    swap = true;
                }
            }
            //缩小排序范围(因为上面已经把最大的推到最后面了)
            last--;
        } while (swap);
        return array;
    }

    public static void main(String[] args) {
        Integer[] numbers = {4,23,2,4,5,6,6};
        BubbleSort2.sort(numbers);
        Arrays.stream(numbers).forEach(System.out::println);
    }
}

演示动图


 转载至链接:https://my.oschina.net/isaac21/blog/3023979。

695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

欢迎来到梁钟霖个人博客网站。本个人博客网站提供最新的站长新闻,各种互联网资讯。 还提供个人博客模板,最新最全的java教程,java面试题。在此我将尽我最大所能将此个人博客网站做的最好! 谢谢大家,愿大家一起进步!

转载原创文章请注明出处,转载至: 梁钟霖个人博客www.liangzl.com

1条评论

Loading...


发表评论

电子邮件地址不会被公开。 必填项已用*标注

自定义皮肤
注册梁钟霖个人博客