孤独骑士 发表于 2013-2-3 10:08:02

Java 排序算法汇总(冒泡,选择,希尔,插入)

package lucene.index;

public class AllSort {

/**
* 冒泡排序,选择排序,插入排序,希尔(Shell)排序 Java的实现
* 2008.11.09
* @author YangL. (http://www.idcn.org)
*/
public static void main(String[] args) {
int[] i = { 7, 5, 6, 12, 4, 9, 3,};
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 > x) {
   int temp = x;
   x = x;
   x = temp;
    }
   }
}
for (int i=0;i<x.length;i++) {
   System.out.print(x + " ");
}
}

// 选择排序
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 < x) {
   lowerIndex = j;
    }
   }
   // 交换
   int temp = x;
   x = x;
   x = 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 < x) {
   int temp = x;
   x = x;
   x = 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;
    int j = 0;
    for (j = i; j >= increment; j -= increment) {
   if (temp < x) {
      x = x;
   } else {
      break;
   }
    }
    x = temp;
   }
}

for (int i : x) {
   System.out.print(i + " ");
}
}
}
页: [1]
查看完整版本: Java 排序算法汇总(冒泡,选择,希尔,插入)