算法(入门)-插入排序

来源:互联网 发布:云计算服务提供商 编辑:程序博客网 时间:2024/06/05 06:27

默认算法排序以从小到大的顺序排序
插入排序(算法 第四版):
  通常人们整理桥牌的方法是一张一张的来,将每一张牌插入到其他已经有序的牌中的适当位置。在计算机的实现中,为了给要插入的元素腾出空间,我们需要将其余所有元素在插入之前都向右移动一位。这种算法叫做插入排序。

public class InsertSort {    public static void sort(int[] a) {         for (int i = 1; i < a.length; i++) {            //判断j和j前一位的值,j小则换位置,否则换位            for (int j = i; j > 0 && less(a[j], a[j - 1]); j--){                exch(a, j, j - 1);            }        }    }    private static void exch(int[] a, int i, int j) {        int t = a[i];        a[i] = a[j];        a[j] = t;    }       private static boolean less(Integer v, Integer w) {        return v.compareTo(w) < 0;    }}

小结:插入排序从数组的1角标元素开始的,首先1角标元素和0角标元素相比较,1角标元素小则换,否则不换。然后再是2角标和1角标元素比较,2角标元素小则换,换后的1角标再和0角标比较,后面的以此类推,如果数组中只有部分数据是无序的话插入排序是非常快的。
  当然,在过去的半个世纪中已经在许多不同类型的计算机上经过了验证。在1980年本书第一版完成之时插入排序就比选择排序快一倍,

阅读全文
0 0