排序算法代码笔记

82 阅读1分钟

冒泡排序

   /**
     * 1.普通的冒泡排序:
     *
     * @param array
     */
    static void bubbleSort1(Integer[] array) {
        // 外层: 注意内层如果用begin + 1 作为index , 要防止数组越界的问题出现:
        for (int end = array.length; end > 0; end--) {
            // 内层:一趟排序下来最大的元素会跑到数组的最右边:
            for (int begin = 1; begin < end; begin++) {
                // 如果左边的元素比相邻的右边的元素大:
                if (array[begin - 1] > array[begin]) {
                    // 就交换:
                    int temp = array[begin - 1];
                    array[begin - 1] = array[begin];
                    array[begin] = temp;
                }
            }
        }

        System.out.println(Arrays.toString(array));
    }

选择排序

   /**
     * 选择排序:
     * 从序列中找出最大的那个元素然后与末尾的元素交换:
     *
     * @param array
     */
    static void selectSort1(Integer[] array) {
        for (int end = array.length - 1; end > 0; end--) {
            int maxIndex = 0;
            // 一趟循环拿出最大值的index索引是几:
            for (int begin = 1; begin <= end; begin++) {
                if (array[maxIndex] < array[begin]) {
                    maxIndex = begin;
                }
            }
            // 拿到最大值的索引后直接和数组中最后的那个值交换:
            int temp = array[maxIndex];
            array[maxIndex] = array[end];
            array[end] = temp;
        }

        System.out.println("选择排序后数组为:" + Arrays.toString(array));
    }