1、算法概念。
2、算法思想。
假设待排序的记录存放在数组R[1..n]中。初始时,R[1]自成1个有序区,无序区为R[2..n]。从i=2起直至i=n为止,依次将R[i]插入当前的有序区R[1..i-1]中,生成含n个记录的有序区。
3、实现思路。
①用一个临时变量temp存储第i个元素(i>=1,下标从0开始)。
②比较R[i] 和R[i+1],如果R[i+1].compareTo(R[i])<0,则R[i+1] = R[i],即比R[i+1]的集合元素依次往右移动一个单位。
③将temp的值赋给R[i].
4、实现代码。
| /**     * description : 直接插入排序 ( straight insertion sort )     * @autor kwzhang     * modify :2012-6-20     *     * @param original 需要排序的数组     * @param from 起始位置,以0为基准     * @param length 数据长度     * @return     */    publicstaticvoidsis(String[] original, intfrom, intlength) throwsException {        if(from < 0|| length < 0|| from + length > original.length) {            thrownewIllegalArgumentException("Array out of bound .");        }        for(inti = from + 1; i < from + length; i++) {            String temp = original[i];            intj = i - 1;            while(j >= 0) {                if(temp.compareTo(original[j]) < 0) {                    original[j + 1] = original[j];                } else{                    break;                }                j--;            }            original[j + 1] = temp;        }    } | 
原文:http://www.cnblogs.com/huangwentian/p/6838848.html