插入排序包括:直接插入排序和希尔排序。

具体代码如下:

直接插入排序:

        /// <summary>
/// 直接插入排序
/// 适用于少量元素的排序
/// 稳定性:稳定
/// 时间复杂度:O(n2)
/// </summary>
public static void SimpInsertSort(int[] array)
{
int temp = ;
for (int i = ; i < array.Length; i++)
{
if (array[i] < array[i - ])
{
temp = array[i];
int j = ;
for (j = i - ; j >= && temp < array[j]; j--)
{
array[j + ] = array[j];
}
array[j + ] = temp;
}
}
}

希尔排序:

        /// <summary>
/// 希尔排序 缩小增量排序
/// 是直接插入排序的改进版
/// 稳定性:不稳定
/// 平均时间复杂度:O(Nlog2N),最坏情况下为O(N1.5)
/// </summary>
public static void ShellSort(int[] array)
{
int gap = array.Length / ;
while (gap > )
{
//直接插入排序
for (int i = ; i < gap; i++)
{
for (int j = i + gap; j < array.Length; j += gap)
{
if (array[j] < array[j - gap])
{
int temp = array[j];
int k = j - gap;
while (k >= && array[k] > temp)
{
array[k + gap] = array[k];
k -= gap;
}
array[k + gap] = temp;
}
}
}
gap = gap / ;
};
}

插入排序-C#实现的更多相关文章

  1. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  2. Html5 直接插入排序

    直接插入排序算法(Straight Insertion Sort),是排序算法中简单的一种算法,基本思想如下: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表.即:先将序列的第 ...

  3. python排序之一插入排序

    python排序之一插入排序 首先什么是插入排序,个人理解就是拿队列中的一个元素与其之前的元素一一做比较交根据大小换位置的过程好了我们先来看看代码 首先就是一个无序的列表先打印它好让排序后有对比效果, ...

  4. java基础算法之插入排序

    一.插入排序介绍 插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序在实现上,通 ...

  5. [LeetCode] Insertion Sort List 链表插入排序

    Sort a linked list using insertion sort. 链表的插入排序实现原理很简单,就是一个元素一个元素的从原链表中取出来,然后按顺序插入到新链表中,时间复杂度为O(n2) ...

  6. 浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析之后续补充说明(有图有真相)

    如果你觉得我的有些话有点唐突,你不理解可以想看看前一篇<C++之冒泡排序.希尔排序.快速排序.插入排序.堆排序.基数排序性能对比分析>. 这几天闲着没事就写了一篇<C++之冒泡排序. ...

  7. 经典排序算法 – 插入排序Insertion sort

    经典排序算法 – 插入排序Insertion sort  插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕. 插入排序方法分直接插入排序和折半插入排序两种, ...

  8. C语言中的插入排序(2016-12-30)

    直接插入排序: 算法思想:假设待排序的记录存放在数组R[1--n]中,初始时,i=1,R[1]自成一个有序区,无序区为R[2--n].然后从i=2起直到i=n,依次将R[i]插入当前的有序区R[1.. ...

  9. JavaScript算法(冒泡排序、选择排序与插入排序)

    冒泡排序.选择排序与插入排序复杂度都是二次方级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看<学习JavaScript数据结构与算法>介绍的冒泡排序,选择排序看 ...

  10. 基本排序算法——插入排序java实现

    插入排序过程: 在初始状态下,第一个元素是排序的,在最终状态下,作为一组数据时排序的. 代码如下;eclipse4.3实现 package sort.basic; import java.util.A ...

随机推荐

  1. 20145338 《网络对抗》 MSF基础应用

    20145338<网络对抗> MSF基础应用 实验内容 ·掌握metasploit的基本应用方式,掌握常用的三种攻击方式的思路. 具体需要完成(1)一个主动攻击;(2)一个针对浏览器的攻击 ...

  2. Bouml快速使用指南

    一.Bouml简介 Android 系统中有大量Java.C++代码,继承以及依赖关系非常复杂,Bouml可以用c++.Java.Idl.Php和Python建模及生成代码,反之也可通过uml工具更好 ...

  3. 输入系统:进程间双向通信(socketpair+binder)

    一.双向通信(socketpair) socketpair()函数用于创建一对无名的.相互连接的套接子,如果函数成功,则返回0,创建好的套接字分别是sv[0]和sv[1]:否则返回-1,错误码保存于e ...

  4. JAVAEE 第八周

    equals():反映的是对象或变量具体的值,即两个对象里面包含的值--可能是对象的引用,也可能是值类型的值. hashCode():计算出对象实例的哈希码,并返回哈希码,又称为散列函数.根类Obje ...

  5. nginx配置ssl证书

    一:加装nginx的ssl模块 1.1:切换到源码包 cd /zz/nginx-1.14.2 1.2:查看已安装模块 /usr/local/nginx/sbin/nginx -V [root@game ...

  6. DevExpress ASP.NET Core Controls 2019发展蓝图(No.3)

    本文主要为大家介绍DevExpress ASP.NET Core Controls 2019年的官方发展蓝图,更多精彩内容欢迎持续收藏关注哦~ [DevExpress ASP.NET Controls ...

  7. linux - man 提示:-bash: man: command not found

    在执行man命令时,提示:-bash: man: command not found 原因1:没有配置path环境 解决:vi /etc/profile JAVA_HOME=/usr/java/jdk ...

  8. Traceur

    直接插入网页 <!-- 加载Traceur编译器 --> <script src="http://google.github.io/traceur-compiler/bin ...

  9. GitHub入门与实践 读书笔记三:(1)GitHub账户注册教程

    第一步:进入GitHub官网,官网地址:https://github.com/ 第二步:点击Sign up for GitHub 1.昵称一栏:每次在你输入昵称之后,都会检查是否已经被注册.如果被注册 ...

  10. python小趣味_520绘制一个心形.

    从某个公众号上看到的. 跑了一下, 居然可以成功运行. 有心的话可以研究下代码. 利用了turtle模块 #!/usr/bin/env python # coding:utf-8 import tur ...