java中选择排序,冒泡排序和二分法查找学习记录

就直接上代码了,要多思考才能搞得清楚,最近因为工作的事情耽误了好了,不能放弃啊!

选择排序,冒泡排序和二分法查找数据

/**
     * main 函数
     * 
     * @param args
     */
    public static void main(String[] args) {
        int[] m = new int[] { 2, 5, 1, 4, 6, 8, 7, 9, 8 };

        System.out.print("选择排序的结果是:");
        XuanzePaixu(m);
        for (int s : m) {
            System.out.print(s + " ");
        }
        System.out.println();

        System.out.print("冒泡排序的结果是:");
        MaoPaoPaixu(m);
        for (int s : m) {
            System.out.print(s + " ");
        }

        System.out.println();
        System.out.print("二分查找的结果是:");
        System.out.println();
        int[] n = { 11, 22, 33, 44, 55, 66, 77, 88, 99 };
        System.out.println("66下标是" + SecondChaZhao(n, 66));
        System.out.println("101下标是" + SecondChaZhao(n, 101));
    }

    /**
     * 选择排序:依次固定每个下标,让每个固定下标中的数和后面所有的数据进行比较
     * 
     * @param m
     *            需要排序的数据,按大到小排序
     */
    public static void XuanzePaixu(int[] m) {
        int n;
        for (int i = 0; i < m.length - 1; i++) {
            for (int j = i + 1; j < m.length; j++) {
                if (m[j] > m[i]) {
                    n = m[j];
                    m[j] = m[i];
                    m[i] = n;
                }
            }
        }
    }

    /**
     * 冒泡排序:下标相邻的两个数进行排序
     * 
     * @param m
     *            需要排序的数据,按由小到大排序
     * 
     */
    public static void MaoPaoPaixu(int[] m) {
        int n;
        for (int i = 0; i < m.length - 1; i++) {
            for (int j = 0; j < m.length - 1 - i; j++) {
                if (m[j] > m[j + 1]) {
                    n = m[j];
                    m[j] = m[j + 1];
                    m[j + 1] = n;
                }
            }
        }
    }

    /**
     * 二分法排序,前提:被查找的数组是有序排列的,没有该数,默认返回-1
     * 
     * @param m
     *            被查找的数组数据
     * @param key
     *            需要查找的数据
     * 
     */
    public static int SecondChaZhao(int[] n, int key) {
        int min = 0, max = n.length - 1, mid;
        while (min <= max) {
            mid = (min + max) >> 1;
            if (key > n[mid])
                min = mid + 1;
            else if (key < n[mid])
                max = mid - 1;
            else
                return mid;
        }
        return -1;
    }

输出的结果为:

选择排序的结果是:9 8 8 7 6 5 4 2 1
冒泡排序的结果是:1 2 4 5 6 7 8 8 9
二分查找的结果是:
66下标是5
101下标是-1

你可能感兴趣的:(算法学习)