zoukankan      html  css  js  c++  java
  • 插入排序


    插入排序

     


      插入排序:最简单的排序算法之一,由N-1趟排序组成。对于p=1到N-1趟,插入排序保证从位置0到位置p上的元素为已排序状态。如下表所示:

    原始数组 34 8 64 51 32 21 移动的位置
    p=1趟之后 8 34 64 51 32 21 1
    p=2趟之后 8 34 64 51 32 21 0
    p=3趟之后 8 34 51 64 32 21 1
    p=4趟之后 8 32 34 51 64 21 3
    p=5趟之后 8 21 32 34 51 64 4

      如上表表达了插入排序的一般策略。当第p趟时,将位置p上的元素向左移动,直到它在前面的元素之间找到正确的位置,然后将该元素插入该位置。代码如下:

       void insertionSort(int[] a){
            int j;
            for(int p = 1; p < a.length;p++){
                int temp = a[p];
                for(j = p; j > 0 && temp < a[j-1];j--)
                    a[j] = a[j-1];
                a[j] = temp;
            }
        }

    插入排序算法时间复杂度分析:由于嵌套循环的每一个都花费N次迭代,因此插入排序时间复杂度为O(N2)。另一方面,如果输入数据已预先排序,那么运行时间为O(N),因为内层for循环的检测总是立即判定不成立而终止。

     

  • 相关阅读:
    二分查找代码
    顺序查找代码
    js原生获取css属性
    前端使用nginx上传文件时,进度获取不对
    动态赋值poster,无法显示
    git 命令收藏
    promise笔记
    vscode自定义代码块
    vuex的初始化
    webstorm添加自定义代码块
  • 原文地址:https://www.cnblogs.com/zhanglei93/p/5545259.html
Copyright © 2011-2022 走看看