JAVA之插入排序

来源:互联网 发布:java 方法区 内存溢出 编辑:程序博客网 时间:2024/06/05 07:50

插入排序基本思想:将一个未排序的数列,按其大小插入前面已经排好的序列适当位置上,直到全部插入完为止。

抽象的思想往往真的是很让人头痛呀,其实很简单。平时大家打扑克牌的时候,采用的就是插入排序。仔细想想看,当我们摸上第一张扑克牌时,默认我们手里的排就是有序的,因为就只有一张。当我们摸上第二张扑克牌时,会根据第二张的大小,跟第一张进行比较,决定第二张扑克牌是该放在第一张的左边还是右边。重复这样的过程,直到桌上的扑克牌摸完。这时我们会发现自己手里的排是有序的,这种有序的排列就是插入排序。

用一个简单的Demo,展示一下Java实现插入排序的过程:

public static void main(String[] args) {        int a []  =  {4,20,7,3,1};        int c [] = insertSort(a);        for (int i = 0; i < c.length; i++) {            System.out.print(c[i]+"     ");        }    }    public static int [] insertSort(int a[]){        int insertNode ;        int j;        for(int i=1;i<a.length;i++){            insertNode = a[i];            j = i-1;            while(j>=0 && a[j]>insertNode){                a[j+1] = a[j];                j--;            }            a[j+1] = insertNode;            /*-------------------此段代码只是为了研究插入排序运行流程而添加-----------------------*/            for (int k = 0; k < a.length; k++) {                System.out.print(a[k]+"   ");            }            System.out.println();            /*-------------------此段代码只是为了研究插入排序运行流程而添加-----------------------*/        }        return  a;    }

流程解析:

未排序数列:4,20,7,3,1

---------------------------------------------------------------------------------------------------------------------------------

第一趟排序:

排序前数据:4   20   7   3   1  

默认一个数据4是有序的,4和20进行比较,发现4和20是有序数列,不用变。

排序结果:4   20   7   3   1  

---------------------------------------------------------------------------------------------------------------------------------

第二趟排序:

排序前数据:4   20   7   3   1  

首先20和7比较,交换位置。其次4和7比较,有序不变。

排序结果:4   7   20   3   1    

---------------------------------------------------------------------------------------------------------------------------------

第三趟排序:

排序前数据:4   7   20   3   1    

首先3和20比较,交换位置。其次3和7比较,交换位置。最后4和3比较,交换位置。

排序结果:3   4   7   20   1  

---------------------------------------------------------------------------------------------------------------------------------

第四趟排序:

排序前数据:3   4   7   20   1    

首先20和1比较,交换位置。7和1比较,交换位置。4和1比较,交换位置。最后3和1比较,交换位置。

排序结果:1   3   4   7   20    

---------------------------------------------------------------------------------------------------------------------------------

总结:小弟总结总结自己所学知识,望路过大神勿喷哈。谢谢!!!

原创粉丝点击