黑马程序员技术交流社区

标题: [选择排序]经典实现 [打印本页]

作者: 可以假装看不见    时间: 2016-5-26 21:50
标题: [选择排序]经典实现
  1. /*
  2. * 选择排序:
  3. *         算法思想:
  4. *         从第一位开始比较,找到最小的然后从角标为1的元素往后开始比较找到第二小
  5. *  示例:索引 0 1 2 3 4
  6. *              i 1 6 3 9 2
  7. *  
  8. *                    1 6 3 9 2 1<6 不动
  9. *                    1 6 3 9 2 1<3 不动  
  10. *  第0趟          1 6 3 9 2 1<9 不动
  11. *                    1 6 3 9 2 1<2 不动                             得到1为最小值 arr[0] = 1
  12. *                   共比较4次
  13. *         
  14. *  第1趟          1 3 6 9 2 6>3 交换
  15. *                    1 3 6 9 2 3<9 不动
  16. *                    1 2 6 9 3 3<2 交换     得到2为第二小 arr[1] = 2
  17. *         共比较3次
  18. *  第2趟          1 2 6 9 3 6<9 不动
  19. *                         1 2 3 9 6 6>3  交换      得到3位第三小 arr[2] = 3
  20. *                         共比较2次
  21. *  
  22. *  第3趟         1 2 3 6 9 9>6 交换      的到6为第四小   arr[3] = 6
  23. *                      共比较1次                                那么9就是最大的  arr[4] = 9
  24. *
  25. *  外圈循环4次             int.length() = 5 ;              x
  26. *         定义外圈变量 x = 0 ,那么内圈  y 从1-5  大于1    0 + 1 = 1
  27. *         定义外圈变量 x = 1 ,那么内圈  y 从2-5  大于2    1 + 1 = 2
  28. *         定义外圈变量 x = 2 ,那么内圈  y 从3-5  大于3    2 + 1 = 3
  29. *         定义外圈变量 x = 3 ,那么内圈  y 从4-5  大于4    3 + 1 = 4
  30. *         从arr[x]和arr[x+1]做对比  为了防止角标越界  外圈循环要少一次
  31. *         
  32. */
  33. public class SelectSort {

  34.         /**
  35.          * @param args
  36.          */
  37.         static int[] arr = {1,6,3,9,2};
  38.         public static void main(String[] args) {

  39.                
  40.                 sortArr1();
  41.                 printArr();
  42.         }
  43.         public static void sortArr1() {
  44.                 for (int i = 0; i < arr.length-1; i++) {
  45.                         for (int j = i+1; j < arr.length; j++) {
  46.                                
  47.                                 if(arr[i]>arr[j]){
  48.                                         swap(arr,i,j);
  49.                                 }
  50.                         }
  51.                 }
  52.         }
  53.         private static void swap(int[] arr, int i, int j) {
  54.                 int temp = arr[i];
  55.                 arr[i] = arr[j];
  56.                 arr[j] = temp;
  57.         }
  58.         public static void printArr(){
  59.                 System.out.print("[");
  60.                 for (int i = 0; i < arr.length; i++) {
  61.                        
  62.                         if(i!=arr.length-1){
  63.                                 System.out.print(arr[i]+" ,");
  64.                         }else{
  65.                                 System.out.print(arr[i]+"]");
  66.                         }
  67.                 }
  68.         }

  69. }
复制代码





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