案例: 打扑克牌,我们按数字从小到大放置。。 我们摸到 牌 4 , 然后摸到2 ,那么2和4换位, 然后摸到 1 ,把4放到第三张,然后把2放到第二张,然后把1 放到第一张。。
现有牌
2 | 4 |
摸到牌 1 ,, 定义一个key 存放1 。。 然后依次比较现有的牌。。 4比1 大,,把4往后放。
2 | 4 | 4 |
然后2比1大,把2往后放
2 | 2 | 4 |
比较完成后,把1 放到最后发生移动的位置。即2的位置。。
1 | 2 | 4 |
java代码实现如下
package com.mytest.algorithm; import com.sun.deploy.util.ArrayUtil; import java.util.Arrays; /** * @author zhangc * @since 2018/9/12 15:15 * 插入排序 **/ public class InsertSort { public static void main(String[] args) { int[] a = {5,2,1,6,3,4}; for(int i=1;i<a.length;i++){ int key = a[i]; int j = i-1; while (j>=0 && key<a[j]){ //拿当前的牌依次和前面的牌比较,如果成立就将被比较的牌换到该牌的后一位。 a[j+1] = a[j]; j --; } a[j+1] = key; } System.out.println(Arrays.toString(a)); } }