java学习之数组排序

来源:互联网 发布:java重写和重载 编辑:程序博客网 时间:2024/05/20 17:26
    1. public class SortAll {   
    2. /**
    3.    * 冒泡排序,选择排序,插入排序,希尔(Shell)排序 Java的实现
    4.    */  
    5. public static void main(String[] args) {   
    6.    int[] i = { 3025812478323324396, 187 };   
    7.    
    8. System.out.println("----冒泡排序的结果:");   
    9.     maoPao(i);   
    10. System.out.println();
    11.    
    12.     System.out.println("----选择排序的结果:");   
    13. xuanZe(i);   
    14.     System.out.println();   
    15.    
    16. System.out.println("----插入排序的结果:");   
    17.     chaRu(i);   
    18.     System.out.println();   
    19.    
    20. System.out.println("----希尔(Shell)排序的结果:");   
    21.     shell(i);   
    22. }   
    23.   
    24. // 冒泡排序   
    25. public static void maoPao(int[] x) {   
    26. for (int i = 0; i < x.length; i++) {   
    27.     for (int j = i + 1; j < x.length; j++) {   
    28.      if (x[i] > x[j]) {   
    29.       int temp = x[i];   
    30.        x[i] = x[j];   
    31.        x[j] = temp;   
    32.       }   
    33.      }   
    34.     }   
    35.    for (int i : x) {   
    36.      System.out.print(i + " ");   
    37.     }   
    38. }   
    39.   
    40. // 选择排序   
    41. public static void xuanZe(int[] x) {   
    42. for (int i = 0; i < x.length; i++) {   
    43.     int lowerIndex = i;   
    44.     // 找出最小的一个索引   
    45.     for (int j = i + 1; j < x.length; j++) {   
    46.      if (x[j] < x[lowerIndex]) {   
    47.        lowerIndex = j;   
    48.       }   
    49. }   
    50.     // 交换   
    51.     int temp = x[i];   
    52.      x[i] = x[lowerIndex];   
    53.      x[lowerIndex] = temp;   
    54.     }   
    55. for (int i : x) {   
    56.      System.out.print(i + " ");   
    57.     }    
    58. }   
    59.   
    60. // 插入排序   
    61. public static void chaRu(int[] x) {   
    62. for (int i = 1; i < x.length; i++) {// i从一开始,因为第一个数已经是排好序的啦   
    63.     for (int j = i; j > 0; j--) {   
    64.      if (x[j] < x[j - 1]) {   
    65.       int temp = x[j];   
    66.        x[j] = x[j - 1];   
    67.        x[j - 1] = temp;   
    68.       }   
    69.      }   
    70.     }   
    71.    for (int i : x) {   
    72.      System.out.print(i + " ");   
    73.     }   
    74. }   
    75.   
    76. // 希尔排序   
    77. public static void shell(int[] x) {   
    78.    // 分组   
    79. for (int increment = x.length / 2; increment > 0; increment /= 2) {   
    80.     // 每个组内排序   
    81.     for (int i = increment; i < x.length; i++) {   
    82.      int temp = x[i];   
    83.      int j = 0;   
    84.     
    85. for (j = i; j >= increment; j -= increment) {   
    86.       if (temp < x[j - increment]) {   
    87.         x[j] = x[j - increment];   
    88.        } else {   
    89.        break;   
    90.        }   
    91.       }   
    92.       x[j] = temp;   
    93.      }   
    94.     }   
    95.   
    96.    for (int i : x) {   
    97.      System.out.print(i + " ");   
    98.     }   
    99. }   
    100. }  
原创粉丝点击