• 选择排序之Java实现


    选择排序之Java实现

    一、方法一

     1 package cn.com.zfc.lesson21.sort;
     2 
     3 /**
     4  * 
     5  * @title SelectSort
     6  * @describe 选择排序
     7  * @author 张富昌
     8  * @date 2016年10月1日下午4:13:50
     9  */
    10 public class SelectSort_1 {
    11     // 简单选择排序的第 i 趟是从(elem[i],elem[i+1],...,elem[n-1])选择第 i小的元素,并将此元素放到 elem[i];
    12     // 简单选择排序是从未排序的序列中选择最小元素,接着是次小元素,依此类推,为寻找下一个最小元素,需检索数组中未排序部分;
    13     // 但只一次交换即将待排元素放到正确位置上
    14 
    15     public static void main(String[] args) {
    16         // 声明整型数组
    17         int[] array = new int[10];
    18         // 使用循环和随机数初始化数组
    19         for (int i = 0; i < array.length; i++) {
    20             array[i] = (int) Math.round(Math.random() * 100);
    21         }
    22         System.out.println("原始数组为:");
    23         for (int i : array) {
    24             System.out.print(i + " ");
    25         }
    26         System.out.println();
    27         System.out.println("排序后的数组为:");
    28         for (int i : selectSort(array)) {
    29             System.out.print(i + " ");
    30         }
    31     }
    32 
    33     /**
    34      * 
    35      * 功能:选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置;然后,选出第二小的数,放在第二个位置;以此类推,
    36      * 直到所有的数从小到大排序。在实现上,我们通常是先确定第i小的数所在的位置,然后,将其与第i个数进行交换。
    37      *
    38      * 参数:int[] array
    39      *
    40      * 返回类型:int[]
    41      */
    42     public static int[] selectSort(int[] array) {
    43         // 使用临时数组,替代原始数组
    44         int[] arr = array;
    45         for (int i = 0; i < arr.length - 1; i++) {
    46             // 存放当前最小值的索引
    47             int min_index = i;
    48             for (int j = i + 1; j < arr.length; j++) {
    49                 // 判断当前的最小值的索引
    50                 if (arr[min_index] > arr[j]) {
    51                     min_index = j;
    52                 }
    53             }
    54             // 如果此时的 i 不等于 min_index,则交换该位置上的值
    55             if (i != min_index) {
    56                 int temp = arr[min_index];
    57                 arr[min_index] = arr[i];
    58                 arr[i] = temp;
    59             }
    60         }
    61         return arr;
    62     }
    63 }

    运行结果:

    二、方法二

     1 package cn.com.zfc.lesson21.sort;
     2 
     3 /**
     4  * 
     5  * @title SelectSort
     6  * @describe 选择排序
     7  * @author 张富昌
     8  * @date 2016年10月1日下午4:13:50
     9  */
    10 public class SelectSort_2 {
    11     // 简单选择排序的第 i 趟是从(elem[i],elem[i+1],...,elem[n-1])选择第 i小的元素,并将此元素放到 elem[i];
    12     // 简单选择排序是从未排序的序列中选择最小元素,接着是次小元素,依此类推,为寻找下一个最小元素,需检索数组中未排序部分;
    13     // 但只一次交换即将待排元素放到正确位置上
    14 
    15     public static void main(String[] args) {
    16         // 声明整型数组
    17         int[] array = new int[10];
    18         // 使用循环和随机数初始化数组
    19         for (int i = 0; i < array.length; i++) {
    20             array[i] = (int) Math.round(Math.random() * 100);
    21         }
    22         System.out.println("原始数组为:");
    23         for (int i : array) {
    24             System.out.print(i + " ");
    25         }
    26         System.out.println();
    27         System.out.println("排序后的数组为:");
    28         for (int i : selectSort(array)) {
    29             System.out.print(i + " ");
    30         }
    31     }
    32 
    33     /**
    34      * 
    35      * 功能:选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置;然后,选出第二小的数,放在第二个位置;以此类推,
    36      * 直到所有的数从小到大排序。在实现上,我们通常是先确定第i小的数所在的位置,然后,将其与第i个数进行交换。
    37      *
    38      * 参数:int[] array
    39      *
    40      * 返回类型:int[]
    41      */
    42     public static int[] selectSort(int[] array) {
    43         // 使用临时数组,替代原始数组
    44         int[] arr = array;
    45         for (int i = 0; i < arr.length - 1; i++) {
    46             // 存放当前最小值的索引
    47             int min_index = i;
    48             for (int j = i + 1; j < arr.length; j++) {
    49                 // 判断当前的最小值的索引
    50                 if (arr[min_index] > arr[j]) {
    51                     min_index = j;
    52                 }
    53             }
    54             // 如果此时的 i 不等于 min_index,则交换该位置上的值
    55             if (i != min_index) {
    56                 int temp = arr[min_index];
    57                 arr[min_index] = arr[i];
    58                 arr[i] = temp;
    59             }
    60         }
    61         return arr;
    62     }
    63 }

    运行结果:

  • 相关阅读:
    项目实现多数据库支持 规格严格
    KeyTool 4096 RSA JDK1.5 1.4 规格严格
    KeyTool用法 规格严格
    Tomcat ssl配置 规格严格
    redmine install 规格严格
    zlib1.2.5的编译 规格严格
    Class unload 规格严格
    Ubuntu 8.10 “Intrepid Ibex” 发布时间表确定
    22项Windows或Mac不能而Linux可以的事
    英语谚语
  • 原文地址:https://www.cnblogs.com/zfc-java/p/7941016.html
Copyright © 2020-2023  润新知