美文网首页
冒泡排序

冒泡排序

作者: EdwardWinner | 来源:发表于2018-07-31 14:14 被阅读7次
/*
 * 冒泡排序通过重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,直到没有再需要交换的元素为止(对n个项目需要O(n^2)的比较次数)。
 * 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
 */
public class BubblingSort {

    private static int[] sTestBubbuling = new int[] { 22, 11, 24, 4, 33, 45, 26 };

    public static void main(String[] args) {
        executeBubbling();
        executeBubbling1();
    }

    // Function 1
    private static void executeBubbling() {
        int temp;
        for (int index = 0; index < sTestBubbuling.length - 1; index++) {
            for (int last = index + 1; last < sTestBubbuling.length - 1; last++) {
                if (sTestBubbuling[index] > sTestBubbuling[last]) {
                    temp = sTestBubbuling[index];
                    sTestBubbuling[index] = sTestBubbuling[last];
                    sTestBubbuling[last] = temp;
                }
            }
        }
        traverseArray();
    }

    // 冒泡排序的原则是:
    // 1.俩俩之间比较,将小的数值和大的数值之间交互,一趟结束之后,最大的数值将会被替换到最后
    // 2.第二趟之间仍然是选择俩俩比较,但是次数-1,将小的数值和大的数值之间交互,将第二大的数值替倒数第二位,依此类推...
    private static void executeBubbling1() {
        int temp;
        for (int index = 0; index < sTestBubbuling.length - 1; index++) {
            for (int last = 0; last < sTestBubbuling.length - 1 - index; last++) {
                if (sTestBubbuling[last] > sTestBubbuling[last + 1]) {
                    temp = sTestBubbuling[last];
                    sTestBubbuling[last] = sTestBubbuling[last + 1];
                    sTestBubbuling[last + 1] = temp;
                    // 每趟比较之后的结果
                    traverseArray();
                }
            }
        }
        traverseArray();
    }

    private static void traverseArray() {
        for (int number : sTestBubbuling) {
            System.out.print(number + " ");
        }
        System.out.println("");
    }
}

Github地址:
JavaSort:https://github.com/EricWinner/JavaSort
有任何问题,欢迎指出.

相关文章

网友评论

      本文标题:冒泡排序

      本文链接:https://www.haomeiwen.com/subject/nfqhvftx.html