• 排序算法练习之选择排序


    练习练习练习!!!

    import java.util.Arrays;
    
    /**
     * @Date: 2019-11-24 09:20
     * @King: No blood!No bone!No ash!!!
     */
    public class TestSelectionSort {
      public static void main(String[] args) {
        /**
         * 定义数组
         */
        int [] arr = new int[7];
        arr[0] = 31;
        arr[1] = 13;
        arr[2] = 21;
        arr[3] = 33;
        arr[4] = 10;
        arr[5] = 25;
        arr[6] = 11;
        /**
         * 输出排序前
         */
        System.out.println("排序前:"+ Arrays.toString(arr));
        /**
         * 调用两种选择排序方法,并输出结果
         */
        selectionSortI(arr);
        System.out.println("无返回值类型排序后:"+Arrays.toString(arr));
        selectionSortII(arr);
        System.out.println("有返回值类型排序后:"+Arrays.toString(arr));
      }
    
      /**
       * 无返回值类型的选择查找
       */
      public static void selectionSortI (int [] array) {
        /**
         * 外层循环控制排序趟数
         */
        for (int i = 0;i < array.length - 1;i++) {
          for (int j = i;j < array.length - 1;j++) {
            /**
             * 假设每趟循环开始位置的元素最小,下标为minIndex = i
             */
            int minIndex = i;
            /**
             * 一趟循环结束发现比array[minIndex]小的元素,将其下标赋给minIndex
             * 一趟循环结束后将最小元素与开始元素交换位置
             */
            if (array[minIndex] > array[j + 1]) {
              minIndex = j + 1;
            }
            int temp = array[minIndex];
            array[minIndex] = array[i];
            array[i] = temp;
          }
        }
      }
      /**
       * 有返回值类型的选择查找
       */
      public static int [] selectionSortII (int [] array) {
        if (array.length == 0) {
          return array;
        }
        for (int i = 0;i < array.length - 1;i++) {
          int minIndex = i;
          for (int j = i;j < array.length - 1;j++) {
            if (array[minIndex] > array[j+1]) {
              minIndex = j + 1;
            }
            int temp = array[minIndex];
            array[minIndex] = array[i];
            array[i] = temp;
          }
        }
        return array;
      }
    }

    运行结果:

    排序前:[31, 13, 21, 33, 10, 25, 11]
    无返回值类型排序后:[10, 11, 13, 21, 25, 31, 33]
    有返回值类型排序后:[10, 11, 13, 21, 25, 31, 33]

    尽量让自己养成编程保证程序健壮性的习惯!

  • 相关阅读:
    [算法] 堆栈
    [刷题] PTA 02-线性结构3 Reversing Linked List
    java IO流 (八) RandomAccessFile的使用
    java IO流 (七) 对象流的使用
    java IO流 (六) 其它的流的使用
    java IO流 (五) 转换流的使用 以及编码集
    java IO流 (四) 缓冲流的使用
    java IO流 (三) 节点流(或文件流)
    java IO流 (二) IO流概述
    java IO流 (一) File类的使用
  • 原文地址:https://www.cnblogs.com/sinoaccer/p/11921539.html
Copyright © 2020-2023  润新知