JavaEE 学习专题程序员Android开发经验谈

Java数据结构与算法(4) -冒泡排序

2017-11-05  本文已影响0人  cmazxiaoma

前言

最近编程状态很自由,我挺喜欢这种感觉。不过还是要给自己制定一个计划,每天学习一小节《Java数据结构与算法》和看一小节刘宇波老师的《数据结构与算法》视频,还有就是学习Spring Boot项目课程。然后每天晚上的时候,写一篇简书总结自己一天回顾的知识。


从简单的冒泡排序开始

冒泡排序算法运行起来十分慢,但在概念上它是排序算法中最简单的,因此冒泡排序算法在开始研究排序技术时是一个非常好的算法。


什么是冒泡排序?

对几个无序的数字进行排序,最常用的方法是所谓的冒泡排序。算法思想是每次比较2个相邻的数字,将小的放在前面,将较大的放在后面,这样就可以将这些数中最大的找出来放在到最后。然后再比较剩下的数字,再在这些数字中找出最大的,直到所有的数字按照从小到大的顺序进行排序。

提炼思想

开始练手

public class BubbleSortDemo {
    public static int[] a = { 2, 4, 6, 8, 3, 6, 9, 12 };

    public static void main(String[] args) {
        sort();
        display();
    }

    public static void sort() {
        int count = a.length;

        for (int i = 0; i < count - 1; i++) {
            for (int k = 0; k < count - 1 - i; k++) {
                if (a[k] > a[k + 1]) {
                    swap(k, k + 1);
                }
            }
        }
    }

    public static void swap(int x, int y) {
        int temp = a[x];
        a[x] = a[y];
        a[y] = temp;
    }

    public static void display() {
        int count = a.length;

        for (int i = 0; i < count; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println("");
    }
}
image.png

性能优化

我们使用的是一个独立的swap()方法来执行交换操作的。它只是交换数组中的两个数据项的值,使用一个临时变量来存储第一个数据项的值,然后把第二项的值赋给第一项,之后再让第二项的值等于临时变量。实际上,使用一个独立的swap()方法不一定好,因为方法调用会增加一些额外的开销,如果写自己使用的排序程序,最好将交换操作这段代码直接放到程序中,这样可以提高一些速度。


冒泡排序的效率


尾言

勿以善小而不为。

上一篇下一篇

猜你喜欢

热点阅读