什么是插入排序呢,就是说像玩扑克,我抓牌,来一一张与我手里的比,小的就放在右边。大的加放在他的右边。
第一眼先与最大的比。比现在我手里的还大就直接放在最右边。比我最右边的小,那么就从最右边依次比下去。比的时候比前面的小就与其交换位置。
代码:就是我抓牌啊。来一个比较一个。
package sorts;
import object.Example;
public class charu extends Example{
/**
* @param args
*/
public static void main(String[] args) {
Comparable[] a = new Comparable[]{"c","b","a","p","r","g","h","w"};
sort(a);
show(a);
System.out.println(isSorted(a));
}
public static void sort(Comparable[] a){
int N = a.length;
for(int i=1;i<N;i++){
//一个一个i来
for(int j=i;j>0&&less(a[j], a[j-1]);j--){
//只要是j比他的前一位小并且没有循环完成就交换位置
//如果j比他的前一位大那么就跳出循环了。
//什么时候是j比他的前一位大呢,就是说j前面的已经排序好了。
//然后新来了一个人,讲道理要与现在最大的比较,也就是j-1。
//如果来得这个人很牛逼啊比现在最大的还大那么他就不用动了。也就比完了。
//如果小于最大的那么就继续向下比!并且要交换。
exch(a, j, j-1);
}
}
}
}
同样参考那位博主的图片:
http://blog.youkuaiyun.com/jianyuerensheng/article/category/6203559