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

来源:互联网 发布:网络店铺运营 编辑:程序博客网 时间:2024/06/03 21:12

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

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

/**     * 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

0 0
原创粉丝点击