• 排序算法之 Java插入排序算法


    package net.qh.test.sort;
    
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.List;
    
    /**
     * Created by Administrator on 2016/03/01.
     */
    public class Insert {
    
        public int[] sort(int[] arr){
            if ( arr == null || arr.length <= 1 ){
                return arr;
            }
            int length = arr.length;
            for(int i = 1; i < length;i++){
                int k = i-1;
                int temp = arr[i];
                while(k >= 0){
                    if(arr[k] > temp){
                        arr[k+1] = arr[k];
                    }else{
                        break;
                    }
                    arr[k] = temp;
                    k--;
                }
            }
    
            return arr;
        }
    
    
        public static void main(String[] args){
    
            List<Integer> intList = new ArrayList<Integer>();
            for(int i = 0; i < 100000; i++){
                intList.add(i);
            }
            int[] arr = new int[intList.size()];
            for(int j = 0; j < arr.length; j++){
                arr[j] = intList.get(j);
            }
            for(int temp : arr){
                System.out.print(temp + ", ");
            }
            System.out.println("");
            long start = Calendar.getInstance().getTimeInMillis();
            arr = new Insert().sort(arr);
            long end = Calendar.getInstance().getTimeInMillis();
            System.out.println("所需毫秒:" + (end - start));
            for(int temp : arr){
                System.out.print(temp + ", ");
            }
        }
    
        /**
             1. 该排序算法是简单插入排序算法。
             2. 排序思想:通过遍历,把最小的找出来,记录下标,然后和目的位置进行交换。
             3. 和冒泡排序比较:
                                和冒泡排序一样是一个非常简单的排序算法。
                                把一条新的记录插入到一个有序的数组中时,通有序数组进行比较,把大的数据往后面移动,然后把新的记录赋值合适的位置。
                                冒泡排序进行的是完全交换,插入排序进行的是半交换,比冒泡排序要快。
             4. 简单选择排序的阶:O(n^2), 是稳定的排序。
             5. 实战测试:4核CPU和8G内存下,对100000个整型元素的数组排序, 逆序需要 5646 毫秒, 有序需要:5798毫秒
         */
    
    }
    

      

  • 相关阅读:
    使用jmeter进行性能测试-Jmeter教程及技巧汇总 (转)
    Linux防火墙(Iptables)的开启与关闭
    解决Unable to load R3 module ...VBoxDD.dll (VBoxDD):GetLastError=1790
    Linux如何修改文件/文件夹内所有文件的权限
    php抽象类的简单应用
    php接口和多态的概念以及简单应用
    关于php中数据访问的几点补充
    php中重写和final关键字的使用
    php中static静态关键字的使用
    php对象引用和析构函数的关系
  • 原文地址:https://www.cnblogs.com/aDiot/p/5232172.html
Copyright © 2020-2023  润新知