面试系列-冒泡排序

来源:互联网 发布:火狐javascript设置 编辑:程序博客网 时间:2024/06/04 19:10

冒泡排序

定义

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

这是百度百科对冒泡排序的定义,让我们从定义开始吧!
这段话最核心的内容是:循环走访,两两比较.可以理解成三个动作:
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. 根据排序方式交换被比较的两个数.