排序算法之插入排序

/**
 * 插入排序算法 把无序的集合 通过摸牌的方式排出有序形式
 * @param a 无序集合
 * 场景: 斗地主
 *   农民手中牌 -> 有序集合
 *   桌上的牌 -> 无序
 *   农民每摸一张牌 会一一比较牌的大小 直到找到合适的位置才会插入该位置 比如 相同大小/比该牌大一点和比该牌小一点的中间位
 *   eg: 手中牌 [A,2,5,6] 摸中的牌 是4 则插入的位置是2和5的中间 最终的结果是 [A,2,4,5,6]
 * eg:      i        a            j    a[j]     temp
 *          1    [1,6,-2,4]       0      1        6
 *          2    [1,6,-2,4]       1      6       -2
 *               [1,6,6,4]        0      1       -2
 *               [1,1,6,4]       -1      -       -2   ->执行一次a[j+1]=temp; => a[0]=-2; a=>[-2,1,6,4]
 *          3    [-2,1,6,4]       2      6        4
 *               [-2,1,6,6]       1      1        4   ->执行一次a[j+1]=temp;     a[2]=4; a=>[-2,1,4,6]
 *注:该算法把集合左边模拟成一个有序的集合 然后 用右边无序的值 在有序集合中由大到小进行比对 找到合适的位置就插入[把大于它的数值均往后移动一位]
 * */
public static int [] insertSort(int[] a){
    for(int i=1;i<a.length;i++){
        int j = i-1 ;
        int temp = a[i];
        while (j>=0&&a[j]>temp){
                a[j+1]=a[j];
                j--;
        }
        a[j+1]=temp;
    }
    return a ;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值