haveatry 发表于 2010-11-8 16:05:26

java初学之排序——插入法排序

java初学之排序——插入法排序

Java私塾跟我学系列——JAVA篇
基本思路:每拿到一个元素,都要将这个元素与所有它之前的元素遍历比较一遍,让符合排序顺序的元素挨个移动到当前范围内它最应该出现的位置。

举个例子来说,就用前面的数组,我们要对一个有 5 个元素的数组进行升序排列,假设第一个元素的值被假定为已排好序了,那么我们就将第 2 个元素与数组中的部分进行比较,如果第 2 个元素的值较小,则将它插入到第 1 个元素的前面,现在就有两个元素排好序了,我们再将没有排序的元素与排好序的元素列表进行比较,同样,如果小于第一个元素,就将它插入到第一个元素前面,但是,如果大于第一个元素的话,我们就将它再与第 2 个元素的值进行比较,小于的话就排在第 2 个元素前面,大于的话,就排在第 2 个元素的后面。以此类推,直到最后一个元素排好序。

示例如下:
public class Test {
   public static void main(String[] args) {
   // 需要排序的数组,目前是按照升序排列的
      int a[] = new int;
      a = 3;
      a = 4;
      a = 1;
      a = 5;
      a = 2;

      // 插入法排序
      int temp;
      for (int i = 1; i < a.length; i++) {// i=1开始,因为第一个元素认为是已经排好序了的
         for (int j = i; (j > 0) && (a < a); j--) {
            //交换
            temp = a;
            a = a;
            a = temp;
         }
      }
      // 检测一下排序的结果
      for (int i : a) {
         System.out.println("i=" + i);
      }
   }
}运行结果:
i=1
i=2
i=3
i=4
i=5

如果你想要按照降序排列,很简单,只需要把: a < a这句话修改成:a > a就可以了。
页: [1]
查看完整版本: java初学之排序——插入法排序