面试系列-冒泡排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guitarrain/article/details/77988832

冒泡排序

定义

笔试中有时会碰到手写冒泡排序的题目,并没有多难只是工作中不常用一时写不出来.现在来理清一下思路.
  

这是百度百科对冒泡排序的定义,让我们从定义开始吧!
这段话最核心的内容是:循环走访,两两比较.可以理解成三个动作:
1. 循环遍历,每次循环找出最大的数放到数列顶端.
2. 找出被比较的两个对象.
3. 根据比较结果,判断是否需要交换.

代码

public class BubbleSort {
    public static void main(String[] args) {
        //定义数组
        int[] s = {2,1,5,3,6,9,4};
        //调用冒泡排序方法
        sort(s);
        for (int bubble : s) {
            System.out.print(bubble + " ");
        }
    }

    private static void sort(int[] s) {
        for(int i = 1;i < s.length;i++) {//1.循环走访
            for(int j = 0;j < s.length - i;j++) {//2.两两比较
                if(s[j] > s[j + 1]) {
                    exChange(s, j);//3.冒泡
                }
            }
        }
    }

    private static void exChange(int[] s, int j) {
        int temp;
        temp = s[j];
        s[j] = s[j + 1];
        s[j + 1] = temp;
    }
}

最后输出排序结果:
1 2 3 4 5 6 9

  1. 第一次层for循环是走访的次数,一个长度为n的数组循环n-1才能将所有数字排序;
  2. 第二层for循环是表示每次走访,要进行多少次两两比较;
  3. 根据排序方式交换被比较的两个数.

猜你喜欢

转载自blog.csdn.net/guitarrain/article/details/77988832
今日推荐