排序算法

Java数组排序总结(冒泡,选择,插入,希尔)
2010-07-20 上午 10:02
  1.   
  2. public class SortAll {   
  3.   
  4. /**
  5.    * 冒泡排序,选择排序,插入排序,希尔(Shell)排序 Java的实现
  6.    * 2008.11.09
  7.    * @author YangL. (http://www.idcn.org)
  8.    */  
  9. public static void main(String[] args) {   
  10.   int[] i = { 1, 5, 6, 12, 4, 9, 3, 23, 39, 403, 596, 87 };   
  11.    System.out.println("----冒泡排序的结果:");   
  12.    maoPao(i);   
  13.    System.out.println();   
  14.    System.out.println("----选择排序的结果:");   
  15.    xuanZe(i);   
  16.    System.out.println();   
  17.    System.out.println("----插入排序的结果:");   
  18.    chaRu(i);   
  19.    System.out.println();   
  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.     for (j = i; j >= increment; j -= increment) {   
  85.      if (temp < x[j - increment]) {   
  86.        x[j] = x[j - increment];   
  87.       } else {   
  88.       break;   
  89.       }   
  90.      }   
  91.      x[j] = temp;   
  92.     }   
  93.    }   
  94.   
  95.   for (int i : x) {   
  96.     System.out.print(i + " ");   
  97.    }   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值