zoukankan      html  css  js  c++  java
  • 插入排序的算法描述和分析

    插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。
      它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,
      通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,
      需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
      时间复杂度:最佳为o(n):因为如果是已经排序好的序列话,它每次只需和前面已排序好的序列比较一次,总共比较n次,也是可以通过flag实现的,然后最差时间复杂度(平均为)为o(n^2)

    package sort;
    
    /**
     * @author wyc
     * 插入排序
     */
    public class InsertionSort {
        public static void main(String[] args) {
            /*int[] arrays = {1,11,12,4,2,6,9,0,3,7,8,2};*/
            int[] arrays = {12,11,10,9,8};
            int[] sortArray = new int[arrays.length];
            insertionSorting(arrays, sortArray);
            for(int value : sortArray){
                System.out.print(value+",");
                
            }
            System.out.print("           "+sortArray.length);
        }
        
        private static void insertionSorting(int[] array,int[] sortArray){
            sortArray[0] = array[0];
            for(int j = 1;j < array.length;j++){
                for(int i = j-1,flag = 1; i >= 0;i--){
                    if(array[j] > sortArray[i]){
                        swap(sortArray,i,i+1);
                        if(flag == 1){
                            sortArray[i] = array[j];
                            flag = 0;
                        }
                    }else{
                        if(flag == 1){
                            sortArray[i+1] = array[j];
                            break;
                        }
                    }
                }
            }
        }
        
        private static void swap(int[] arrays,int index,int index1){
            arrays[index] = arrays[index] + arrays[index1];
            arrays[index1] = arrays[index] - arrays[index1];
            arrays[index] = arrays[index] - arrays[index1];
        }
    }
  • 相关阅读:
    EcShop二次开发学习方法
    [ 产品经理 ] 互联网产品经理常用软件及工作平台
    Tengine – Nginx衍生版
    把PHP大牛记下来,方便以后关注
    看了极光推送技术原理的几点思考
    centos磁盘满了,查找大文件并清理
    LNMP一键安装包 PHP自动升级脚本
    微信红包系统设计 & 优化
    程序员每天每周每月每年该做的事
    php中$_REQUEST、$_POST、$_GET的区别和联系小结
  • 原文地址:https://www.cnblogs.com/nyhhd/p/12605713.html
Copyright © 2011-2022 走看看