冒泡排序的原理

来源:互联网 发布:怎么网络推广 编辑:程序博客网 时间:2024/04/30 12:24
package com.zheban.test;
/**
 * 数组升序
 * @author King
 *
 */

public class Test1 {
    public static void main(String[] args) {

        int[] arr1 = new int[] { 1, 3, 5, 7, 0, 45, 32 };

        // 排序前的数组打印
        print(arr1);

        // 冒泡排序
        sort02(arr1);

        // 排序后的数组打印
        print(arr1);

    }

    /**
     * 打印功能 返回值:无 参数列表:arr1[];
     *
     */

    static void print(int[] arr1) {
        System.out.print("[");
        for (int i = 0; i < arr1.length; i++) {
            if (i != arr1.length- 1)
                System.out.print(arr1[i] + ",");
            else
                System.out.println(arr1[i] + "]");
        }
    }

    /**
     * 排序方式:冒泡排序:冒泡排序i没有参与比较,只起控制轮数的作用;
     * <p>
     *
     * 设len = (length-1);防止数组越界;
     * (因为在下列代码中有,arr[j]和arr[j+1]作比较,j+1会提前到达长度值,减一刚好不会越界) 思想:
     * (冒泡比较是每一轮:下标0和1,1和2,2和3,3和4.....做比较,因此,最大值永远在右边)内循环一次之后,最大值已经找到,已经排到最后;
     * 因此第二轮比较的时候,最后一个数字不再进行参与,即在参与比较的长度中,长度(成员)已经减少一个,len-i;
     * ;随着i的变大,进行比较的成员的长度便一轮一轮的减短
     * </p>
     *
     * 返回值:没有 参数类型:int 型; 选择排序:第一次循环结束,最值在最左边;
     *
     * @param arr1
     *
     */

    static void sort02(int[] arr1) {

        /**
         * len = arr1.length-1;因为有j+1,所以不减1会数据越界
         */


        int len = arr1.length- 1;// 用于内循环

        for (int i = 1; i <= arr1.length; i++) {
            // 俩俩比较,随着进行比较的轮数的增多,而比较的长度却在一个一个的减少
            for (intj = 0; j < len - i; j++) {

                if (arr1[j] > arr1[j + 1]) {

                    int temp = arr1[j];
                    arr1[j] = arr1[j + 1];
                    arr1[j + 1] = temp;
                }
            }

        }

    }

    /**
     * 排序方式:选择排序; 返回值:没有 参数类型:int 型; 选择排序:第一次循环结束,最值在最大左边;
     *
     * @param arr1
     */

    static void sort01(int[] arr1) {

        for (int i = 0; i < arr1.length; i++) {

            for (int j = i + 1; j < arr1.length; j++) {
                int temp = 0;
                if (arr1[i] > arr1[j]) {
                    temp = arr1[i];
                    arr1[i] = arr1[j];
                    arr1[j] = temp;
                }
            }
        }
    }

}


原创粉丝点击