LinkedList实现的插入式升/降序排序算法

来源:互联网 发布:网络歌手排行榜2008 编辑:程序博客网 时间:2024/05/21 01:57
package myPackage;import java.util.LinkedList;/** * 此排序算法是通过 java 中LinkedList实现的插入式升/降序排序算法 * 所谓插入式:一边向LinkedList中插入数据一边排序 * <b>以Integer类型为例</b> * */public class InsertSortLinkedList {    public static void main(String[] args) {    LinkedList<Integer> elemList = new LinkedList<Integer> ();    try {    long start = System.currentTimeMillis();upSort(6, elemList);upSort(5, elemList);upSort(4, elemList);upSort(3, elemList);upSort(2, elemList);upSort(1, elemList);upSort(8, elemList);upSort(6, elemList);upSort(5, elemList);upSort(4, elemList);upSort(3, elemList);upSort(2, elemList);upSort(1, elemList);upSort(8, elemList);upSort(6, elemList);upSort(5, elemList);upSort(4, elemList);upSort(3, elemList);upSort(2, elemList);upSort(1, elemList);upSort(8, elemList);upSort(6, elemList);upSort(5, elemList);upSort(4, elemList);upSort(3, elemList);upSort(2, elemList);upSort(1, elemList);upSort(8, elemList);upSort(6, elemList);upSort(5, elemList);upSort(4, elemList);upSort(3, elemList);upSort(2, elemList);upSort(1, elemList);upSort(8, elemList);upSort(6, elemList);upSort(5, elemList);upSort(4, elemList);upSort(3, elemList);upSort(2, elemList);upSort(1, elemList);upSort(8, elemList);upSort(6, elemList);upSort(5, elemList);upSort(4, elemList);upSort(3, elemList);upSort(2, elemList);upSort(1, elemList);upSort(8, elemList);upSort(6, elemList);upSort(5, elemList);upSort(4, elemList);upSort(3, elemList);upSort(2, elemList);upSort(1, elemList);upSort(8, elemList);upSort(6, elemList);upSort(5, elemList);upSort(4, elemList);upSort(3, elemList);upSort(2, elemList);upSort(1, elemList);upSort(8, elemList);upSort(6, elemList);upSort(5, elemList);upSort(4, elemList);upSort(3, elemList);upSort(2, elemList);upSort(1, elemList);upSort(8, elemList);upSort(6, elemList);upSort(5, elemList);upSort(4, elemList);upSort(3, elemList);upSort(2, elemList);upSort(1, elemList);upSort(8, elemList);upSort(6, elemList);upSort(5, elemList);upSort(4, elemList);upSort(3, elemList);upSort(2, elemList);upSort(1, elemList);upSort(8, elemList);upSort(6, elemList);upSort(5, elemList);upSort(4, elemList);upSort(3, elemList);upSort(2, elemList);upSort(1, elemList);upSort(8, elemList);upSort(6, elemList);upSort(5, elemList);upSort(4, elemList);upSort(31, elemList);upSort(21, elemList);upSort(1, elemList);upSort(81, elemList);upSort(16, elemList);upSort(5, elemList);upSort(14, elemList);upSort(3, elemList);upSort(2, elemList);upSort(21, elemList);upSort(8, elemList);upSort(6, elemList);upSort(5, elemList);upSort(41, elemList);upSort(3, elemList);upSort(2, elemList);upSort(1, elemList);upSort(18, elemList);upSort(6, elemList);upSort(5, elemList);upSort(4, elemList);upSort(3, elemList);upSort(12, elemList);upSort(1, elemList);upSort(8, elemList);upSort(61, elemList);upSort(5, elemList);upSort(4, elemList);upSort(332, elemList);upSort(2, elemList);upSort(13, elemList);upSort(8, elemList);upSort(6, elemList);upSort(5, elemList);upSort(2344, elemList);upSort(3423, elemList);upSort(2, elemList);upSort(1, elemList);upSort(8, elemList);long end = System.currentTimeMillis();System.out.println(end - start);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}    for(Integer intgeter: elemList){    System.out.println(intgeter);    }    }    /**     *     升序算法含义:     * 1、首先判断新增元素和元素集合不能为null;     * 2、判断元素集合是否为空,如果为空则将当前新增元素插入到链表的表头     * 3、如果不是第二种情况则需要遍历整个链表,查看是否有已存在元素比当前新增元素大,     * 如果有则将当前元素插入到已存在元素的位置     * 4、如果遍历到最后一个位置没有比当前新增元素大,那么就将新增元素插入到链表的最后一个位置     *     */    public static void upSort(Integer element,LinkedList<Integer> elemList) throws Exception{        if(element == null)        {            throw new Exception("插入元素为null");        }        if(elemList == null)        {            throw new Exception("元素集合为null");        }        if(elemList.size() == 0)        {            elemList.add(element);        }else{            if(element < elemList.getFirst())            {                elemList.addFirst(element);            }else {                boolean insertFlag = false;                for (Integer e : elemList)                {                    if(element < e)                    {                        int index = elemList.indexOf(e);                        elemList.add(index, element);                        insertFlag = true;                        break;                    }                }                if(!insertFlag)                {                    elemList.addLast(element);                }            }        }    }    /**     ** 降序同升序的设计思想相同     *     */    public static void downSort(Integer element,LinkedList<Integer> elemList) throws Exception    {        if(element == null)        {            throw new Exception("插入元素为null");        }        if(elemList == null)        {            throw new Exception("元素集合为null");        }        if(elemList.size() == 0)        {            elemList.add(element);        }else{            if(element > elemList.getFirst())            {                elemList.addFirst(element);            }else {                boolean insertFlag = false;                for (Integer e : elemList)                {                    if(element > e)                    {                        int index = elemList.indexOf(e);                        elemList.add(index, element);                        insertFlag = true;                    }                }                if(!insertFlag)                {                    elemList.addLast(element);                }            }        }    }}


原创粉丝点击