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

    • 基本思想

      插入排序是一种简单的排序算法,其基本思想是将第一个记录看成是一个有序子序列,再依次从第二个记录起逐个插入到这个有序的子序列中。一般来说,在第i步上,将R(i)插入到R(i)~R(i-1)构成的有序子序列。

      插入排序算法由嵌套的两个for循环组成,外层for循环n-1次,内层for循环比较复杂,循环次数依赖于第i个元素前关键字值比elem[i].key大的元素个数。

    • 复杂度分析

      在最坏的情况下,每个循环都必须移动到数组的最前面,即原数组元素是逆序。这时第一趟循环1次,第二趟循环2次,依次类推,总比较的次数为 n(n-1)/2=O(n2)。

      在最好的情况下,数组元素已经按关键字递增排序,这时每个内层循环到的元素都不需要移动,总的比较次数为n-1,所以此时的时间复杂度为O(n)。

      如果待排序元素是随机的,也就是排序的元素可能出现的概率是相同的,这时可取最坏情况和最好情况的平均值,平均时间复杂度为O(n2)

    • 代码实现
     1 public int[] sort1(int[] array) {
     2         // 直接插入排序
     3         for (int i = 1; i < array.length; i++) {
     4             int tmp = array[i];
     5             int j = i;
     6             while (tmp < array[j - 1]) {
     7                 array[j] = array[j - 1];
     8                 j--;
     9             }
    10             array[j] = tmp;
    11         }
    12         return array;
    13     }
  • 相关阅读:
    Python基础知识大总结
    Python基础教程第一章 python基础知识
    XDUOJ 1000-1002题解
    C# PDF格式 下载
    C# 文件(图片)下载
    C# DataTable转List
    C# Excel导入与导出
    C# 文件压缩与解压
    C# 文件流 导入 导出
    C# lambda表达式
  • 原文地址:https://www.cnblogs.com/pyexile/p/10958118.html
Copyright © 2011-2022 走看看