插入排序

来源:互联网 发布:面试常用的排序算法 编辑:程序博客网 时间:2024/06/14 11:16

插入排序,我理解的原理就是从一个数组中的第二位开始,也就是下标为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

原创粉丝点击