黑马程序员技术交流社区

标题: 数组排序之[选择排序]:不断挑选剩余元素中的最小者 [打印本页]

作者: James_01    时间: 2016-6-22 00:59
标题: 数组排序之[选择排序]:不断挑选剩余元素中的最小者
  1. /*
  2. * 数组排序之[选择排序]:(本质:不断挑选剩余元素中的最小者)
  3. * 分析:
  4.          * 1、定义一个数组
  5.          * 2、因为涉及到交换,所以定义一个数组中两个位置上元素交换的方法
  6.          * 3、找到数组中最小的元素,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素,那么它就和自己交换)
  7.          * 4、在剩下到元素中找到最小的元素,将它与数组中的第二个元素交换位置,
  8.          * 5、循环这个过程,直到整个数组排序
  9. */
  10. public class SimpleIteration {

  11.         /**
  12.          * @param args
  13.          */
  14.         public static void main(String[] args) {
  15.                 // 定义一个数组
  16.                 int[] qm = {11,13,7,8,1,3,4,2};
  17.                 //调用选择排序方法
  18.                 selectSort(qm);
  19.                 //遍历打印数组元素
  20.                 for(int s : qm ) {
  21.                         System.out.print(s + " ");
  22.                 }
  23.         }

  24.         //选择排序
  25.         /*找到数组中最小的元素,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素,那么它就和自己交换)
  26.          * 在剩下到元素中找到最小的元素,将它与数组中的第二个元素交换位置,
  27.          * 循环这个过程*/
  28.         public static void selectSort(int[] arr){
  29.                 for (int i = 0; i < arr.length-1; i++) {       
  30.                         int min = i;
  31.                         for (int j = i+1; j < arr.length; j++) {
  32.                                 if (arr[j]< arr[min]) {
  33.                                         min = j;
  34.                                 }
  35.                         }
  36.                         //每一次找出当时数组最小值的索引后,调用方法交换元素位置
  37.                         swap(arr, i, min);
  38.                 }
  39.         }

  40.         /**
  41.          * 因为涉及到交换,所以定义一个数组中两个位置上元素交换的方法
  42.          * 交换数组中两个元素的位置
  43.          * @param arr
  44.          * @param i
  45.          * @param j
  46.          */
  47.         private static void swap(int[] arr, int i, int j) {
  48.                 int temp = arr[j];
  49.                 arr[j] = arr[i];
  50.                 arr[i] =temp;
  51.         }
  52. }
复制代码



作者: James_01    时间: 2016-6-22 01:00
点招常考题




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2