A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 大牛1 中级黑马   /  2016-6-1 20:26  /  518 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

数组排序之选择排序
  1. package cn.itcast_02;

  2. /*
  3. * 数组排序之选择排序:
  4. *                 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处
  5. */
  6. public class ArrayDemo {
  7.         public static void main(String[] args) {
  8.                 // 定义一个数组
  9.                 int[] arr = { 24, 69, 80, 57, 13 };
  10.                 System.out.println("排序前:");
  11.                 printArray(arr);

  12.                 /*
  13.                 // 第一次
  14.                 int x = 0;
  15.                 for (int y = x + 1; y < arr.length; y++) {
  16.                         if (arr[y] < arr[x]) {
  17.                                 int temp = arr[x];
  18.                                 arr[x] = arr[y];
  19.                                 arr[y] = temp;
  20.                         }
  21.                 }
  22.                 System.out.println("第一次比较后:");
  23.                 printArray(arr);

  24.                 // 第二次
  25.                 x = 1;
  26.                 for (int y = x + 1; y < arr.length; y++) {
  27.                         if (arr[y] < arr[x]) {
  28.                                 int temp = arr[x];
  29.                                 arr[x] = arr[y];
  30.                                 arr[y] = temp;
  31.                         }
  32.                 }
  33.                 System.out.println("第二次比较后:");
  34.                 printArray(arr);

  35.                 // 第三次
  36.                 x = 2;
  37.                 for (int y = x + 1; y < arr.length; y++) {
  38.                         if (arr[y] < arr[x]) {
  39.                                 int temp = arr[x];
  40.                                 arr[x] = arr[y];
  41.                                 arr[y] = temp;
  42.                         }
  43.                 }
  44.                 System.out.println("第三次比较后:");
  45.                 printArray(arr);

  46.                 // 第四次
  47.                 x = 3;
  48.                 for (int y = x + 1; y < arr.length; y++) {
  49.                         if (arr[y] < arr[x]) {
  50.                                 int temp = arr[x];
  51.                                 arr[x] = arr[y];
  52.                                 arr[y] = temp;
  53.                         }
  54.                 }
  55.                 System.out.println("第四次比较后:");
  56.                 printArray(arr);
  57.                 */
  58.                
  59.                 /*
  60.                 //通过观察发现代码的重复度太高,所以用循环改进
  61.                 for(int x=0; x<arr.length-1; x++){
  62.                         for(int y=x+1; y<arr.length; y++){
  63.                                 if(arr[y] <arr[x]){
  64.                                         int temp = arr[x];
  65.                                         arr[x] = arr[y];
  66.                                          arr[y] = temp;
  67.                                 }
  68.                         }
  69.                 }
  70.                 System.out.println("排序后:");
  71.                 printArray(arr);
  72.                 */
  73.                
  74.                 //用方法改进
  75.                 selectSort(arr);
  76.                 System.out.println("排序后:");
  77.                 printArray(arr);

  78.         }
  79.        
  80.         public static void selectSort(int[] arr){
  81.                 for(int x=0; x<arr.length-1; x++){
  82.                         for(int y=x+1; y<arr.length; y++){
  83.                                 if(arr[y] <arr[x]){
  84.                                         int temp = arr[x];
  85.                                         arr[x] = arr[y];
  86.                                          arr[y] = temp;
  87.                                 }
  88.                         }
  89.                 }
  90.         }

  91.         // 遍历功能
  92.         public static void printArray(int[] arr) {
  93.                 System.out.print("[");
  94.                 for (int x = 0; x < arr.length; x++) {
  95.                         if (x == arr.length - 1) {
  96.                                 System.out.print(arr[x]);
  97.                         } else {
  98.                                 System.out.print(arr[x] + ", ");
  99.                         }
  100.                 }
  101.                 System.out.println("]");
  102.         }
  103. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马