zoukankan      html  css  js  c++  java
  • 排序算法之 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毫秒
         */
    
    }
    

      

  • 相关阅读:
    anguar使用指令写选项卡
    前端性能优化
    有关楼层般的侧导航
    我对面向对象的深刻理解
    jq中的表单验证插件------jquery.validate
    JavaScript 语言中的 this
    闭包,作用域链,垃圾回收,内存泄露
    angular.extend、angular.$watch、angular.bootstrap
    Angular路由(三)
    Angular基础(二)
  • 原文地址:https://www.cnblogs.com/aDiot/p/5232172.html
Copyright © 2011-2022 走看看