算法 - 插入排序
案例: 打扑克牌,我们按数字从小到大放置。。 我们摸到 牌 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));
}
}
浙公网安备 33010602011771号