冒泡排序

来源:互联网 发布:火四川方言版网络原唱 编辑:程序博客网 时间:2024/06/06 13:21

冒泡排序应该算是在面试中比较常考的题目了,以前学的时候都是迷迷糊糊的,现在看到冒泡排序的文章,故对这个基础做下回顾。

public class BubSort {    public static void main(String[] args) {        int[] arr = {3,1,2,9,0,4,2,5,6};        BubSort bs = new BubSort();        bs.sort(arr);        for(int i : arr) {            System.out.print(i+"\t");        }    }    public int[] sort(int[] arr) {        //冒泡排序,从长到短分次排序        for(int i = arr.length - 1; i >= 0; i--) {            for(int j = 1; j <= i; j ++) {                if(arr[j-1] < arr[j]) {                    arr[j-1] = arr[j] + arr[j-1];                    arr[j] = arr[j-1] - arr[j];                    arr[j-1] = arr[j-1] - arr[j];                }            }        }        return arr;    }}

私以为想写出一个冒泡排序首先要知晓冒泡的含义,从代码上看,例子上一个长度为9的数组,首先以9的长度给数组中相邻的两个数排一次序,以例子中内层for的逻辑按大到小的顺序排序,那么第一次排序最小的数会到达最右,第二次排序则会缩短长度,以8的长度给数组再排一次序(其实也可以用9的长度,只不过算法这个东西能提高效率就要尽量提高效率),那么这8个数最小的一个同样到达这个8个数的最右端,以此类推最终得到一个从大到小的数组。
输出结果:
9 6 5 4 3 2 2 1 0