插入排序基本实现

/**
 * 插入排序
 * 模型:扑克牌抓牌期间,在首次抓牌后,假设手里有一张3(下标为0),之后抓到5,则放在3后面,即5的下标为1,再抓到2,判断是不是比5大,比5小,和5交换位置(此时,5的下标变为2,2的下标变为1),
 *  继续判断是否比3大,比3小,和3交换位置(此时,3的下标变为1,2的下标变为0)
 * 原理,从下标为1的地方开始遍历,每次获取当前下标之前的所有数进行遍历,与当前位置的数进行比较,当前位置的小,则交换位置。
 */
public class InsertSort {

    public static void main(String[] args) {
        int[] array = {5,6,8,2,1};
        insertSort(array);
        System.out.println(Arrays.toString(array));
    }


    public  static  void insertSort(int[] array){
        for (int i = 1; i < array.length; i++) {//这里是为了获取每次需要进行比对的数
            for (int j = i; j >0 && array[j] < array[j-1]; j--) {//这是为了将当前的数,与前面已经排好的数进行比对
                //这里,从i开始向前循环,就是说以数组中第i个元素与之前的元素做比对,比前一个小,就往前移
                swap(array,j,j-1);
            }
        }
    }


    //交换位置
    public static  void swap (int[] array, int x , int y){
        int temp = array[x];
        array[x] = array[y];
        array[y] = temp;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值