方寸心间

一路走,十年不回头

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
public class SortAll {   
  
 
/**  
  * 冒泡排序,选择排序,插入排序,希尔(Shell)排序 Java的实现   
  * 2008.11.09  
  * 
@author YangL. (http://www.idcn.org)  
  
*/  
 
public static void main(String[] args) {   
  
int[] i = { 15612493233940359687 };   
  System.out.println(
"----冒泡排序的结果:");   
  maoPao(i);   
  System.out.println();   
  System.out.println(
"----选择排序的结果:");   
  xuanZe(i);   
  System.out.println();   
  System.out.println(
"----插入排序的结果:");   
  chaRu(i);   
  System.out.println();   
  System.out.println(
"----希尔(Shell)排序的结果:");   
  shell(i);   
 }   
  
 
// 冒泡排序   
 public static void maoPao(int[] x) {   
  
for (int i = 0; i < x.length; i++) {   
   
for (int j = i + 1; j < x.length; j++) {   
    
if (x[i] > x[j]) {   
     
int temp = x[i];   
     x[i] 
= x[j];   
     x[j] 
= temp;   
    }   
   }   
  }   
  
for (int i : x) {   
   System.out.print(i 
+ " ");   
  }   
 }   
  
 
// 选择排序   
 public static void xuanZe(int[] x) {   
  
for (int i = 0; i < x.length; i++) {   
   
int lowerIndex = i;   
   
// 找出最小的一个索引   
   for (int j = i + 1; j < x.length; j++) {   
    
if (x[j] < x[lowerIndex]) {   
     lowerIndex 
= j;   
    }   
   }   
   
// 交换   
   int temp = x[i];   
   x[i] 
= x[lowerIndex];   
   x[lowerIndex] 
= temp;   
  }   
  
for (int i : x) {   
   System.out.print(i 
+ " ");   
  }   
 }   
  
 
// 插入排序   
 public static void chaRu(int[] x) {   
  
for (int i = 1; i < x.length; i++) {// i从一开始,因为第一个数已经是排好序的啦   
   for (int j = i; j > 0; j--) {   
    
if (x[j] < x[j - 1]) {   
     
int temp = x[j];   
     x[j] 
= x[j - 1];   
     x[j 
- 1= temp;   
    }   
   }   
  }   
  
for (int i : x) {   
   System.out.print(i 
+ " ");   
  }   
 }   
  
 
// 希尔排序   
 public static void shell(int[] x) {   
  
// 分组   
  for (int increment = x.length / 2; increment > 0; increment /= 2) {   
   
// 每个组内排序   
   for (int i = increment; i < x.length; i++) {   
    
int temp = x[i];   
    
int j = 0;   
    
for (j = i; j >= increment; j -= increment) {   
     
if (temp < x[j - increment]) {   
      x[j] 
= x[j - increment];   
     } 
else {   
      
break;   
     }   
    }   
    x[j] 
= temp;   
   }   
  }   
  
  
for (int i : x) {   
   System.out.print(i 
+ " ");   
  }   
 }   
}  
posted on 2008-12-17 17:35  方寸心间  阅读(2464)  评论(0编辑  收藏  举报