选择排序之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 }



运行结果:

java m个选择n个无序_System

二、方法二



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 }



运行结果:

java m个选择n个无序_选择排序_02