插入排序

插入排序,我理解的原理就是从一个数组中的第二位开始,也就是下标为1的元素存入到一个临时变量中,然后与之前的元素做对比,如果临时变量大,则不做交换,如果临时变量下,则将对比元素后移,将临时变量存入当前位置,继续对比直到前面没有元素可对比。

新手上路


代码如下:

工具类

public class ArrayIns {
    private long[] a;
    private int nElems;

    public ArrayIns(int max){
        a = new long[max];
        nElems = 0;
    }

    //插入数据
    public void insert(long value){
        a[nElems] = value;
        nElems++;
    }
    //循环遍历
    public void display(){
        for(int i=0;i<nElems;i++){
            System.out.print(a[i]+" ");
        }
        System.out.println(" ");
    }
    //插入排序
    public void insSort(){
        int in,out;//in为内层循环,out为外层循环
        for(out = 1;out<nElems;out++){
            long temp = a[out];
            in = out;
            /**
             * 当内层循环数大于零并且前一个数大于临时变量的时候
             */
            while(in>0 && a[in-1] > temp){
                //将大的数值放入后面
                a[in] = a[in-1];
                in--;
            }
            //跳出循环后,in的值已经固定,将临时变量赋予这个位置的值
            a[in]=temp;
        }
    }
}

入口函数


public class insertSort {
    public static void main(String[] args){
        int maxSize = 100;
        ArrayIns arr = new ArrayIns(maxSize);
        arr.insert(77);
        arr.insert(88);
        arr.insert(11);
        arr.insert(33);
        arr.insert(00);
        arr.insert(99);
        arr.insert(22);
        arr.insert(44);
        arr.insert(66);
        arr.insert(55);
        arr.display();
        arr.insSort();
        System.out.println("___________分割线__________________");
        arr.display();
    }
}


结果如下:
77 88 11 33 0 99 22 44 66 55  ___________分割线__________________
0 11 22 33 44 55 66 77 88 99

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值