C# 插入排序

C# 插入排序的相关文章

排序算法之直接插入排序

直接插入排序 前面学过了冒泡排序和简单选择排序后,我们现在开始学习一下直接插入排序. 概念: 直接插入排序的基本操作就是:将一个记录插入到已经排好序的有序表中,从而得到一个新的.记录数量增1的有序表. 代码如下: /**直接插入排序*/ void insertSort(int a[],int aLength) { int i,j,temp; for (i=1; i<aLength; i++) { temp = a[i]; for (j=i-1; j>=0; j--) { if (a[j]<

C 实现的插入排序算法

插入排序算法的原理 有一个很形象的比喻,每次从牌堆里抽一张新牌时,左手一般拿着的是已经排好序的旧牌,有新牌来的时候,会不由自主的从右到左的插入进去.后续的牌按照这个规律下去,最后左手的牌都是排好序了. 现在用程序语言的角度来说明插入排序原理. 从数组的第二位开始loop,这是外loop 开启一个内loop,依次检查外loop当前数组值的左侧,如果比当前数组值大,则左侧值向右移动,直到碰到比当前值小的或者内loop结束,此时把当前值放入 左侧留下的空位. 下面是C 实现的完整代码 #include

C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序

插入|排序|算法 本文介绍了C#的四种排序算法:冒泡排序.选择排序.插入排序和希尔排序 冒泡排序 using System: namespace BubbleSorter { public class BubbleSorter { public void Sort(int [] list) { int i,j,temp: bool done=false: j=1: while((j<list.Length)&&(!done)) { done=true: for(i=0:i<li

内部排序:插入排序和希尔排序的N种实现

前言 本来想将所有的内部排序总结为一篇博文,但是随着研究的深入,还是放弃了这个念头,斟前酌后,还是觉得分开来写比较好,具体原因,看完本篇博文也就自然明了了. 本篇文章主要探讨插入排序和希尔排序,之所将二者放在一起,很明显,是因为希尔排序是建立在插入排序的基础之上的. 注:以下各排序算法的N种实现方法大部分都是我根据算法思想,自己写出来的,或者是参考其本身的经典实现,我自己都已测试通过,但不敢保证一定都没问题,如果有疑问,欢迎指出. 插入排序 插入排序的思想很简单,它的基本操作就是将一个数据插入到

数据结构教程 第三十四课 插入排序、快速排序

教学目的: 掌握排序的基本概念,插入排序.快速排序的算法 教学重点: 插入排序.快速排序的算法 教学难点: 快速排序算法 授课内容: 一.排序概述 排序:将一个数据元素的无序序列重新排列成一个按关键字有序的序列. 姓名 年龄 体重 1李由 57 62 2王天 54 76 3七大 24 75 4张强 24 72 5陈华 24 53 上表按年龄无序,如果按关键字年龄用某方法排序后得到下表: 姓名 年龄 体重 3七大 24 75 4张强 24 72 5陈华 24 53 2王天 54 76 1李由 57

常见排序算法的实现(一)-插入排序

插入排序是最简单最直观的排序算法了,它的依据是:遍历到第N个元素的时候前面的N-1个元素已经是排序好的了,那么就查找前面的N-1个元素把这第N个元素放在合适的位置,如此下去直到遍历完序列的元素为止. 算法的复杂度也是简单的,排序第一个需要1的复杂度,排序第二个需要2的复杂度,因此整个的复杂度就是 1 + 2 + 3 + ... + N = O(N ^ 2)的复杂度. // 插入排序 void InsertSort(int array[], int length) { int i, j, key;

直接插入排序简介

排序是计算机程序设计中一种重要的操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列. 我们之前所熟知的大概是冒泡排序,选择排序,但相对来说,这两种方法的效率不是太高,在这篇文章中我简单的介绍下直接插入排序. 直接插入排序是一种简单的排序方法,它的基本操作是将一个记录插入到已排好的有序表中,从而得到一个新的.记录数增一的有序表. 例如:一直待排序的一组记录的初始排列如下 所示: R(49), R(38), R(97), R(76), R(13), R(27)--

经典算法(2) 直接插入排序的三种实现

直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已 经排好序的子序列中的适当位置,直到全部记录插入完成为止. 设数组为a[0-n-1]. 1. 初 始时,a[0]自成1个有序区,无序区为a[1..n-1].令i=1 2. 将a[i]并入当前的有序区a[0-i-1]中形 成a[0-i]的有序区间. 3. i++并重复第二步直到i==n-1.排序完成. 下面给出严格按照定 义书写的代码(由小到大排序): void Insertsort1(in

算法速成(三)七大经典排序之直接插入排序、希尔排序和归并排序

直接插入排序: 这种排序其实蛮好理解的,很现实的例子就是俺们斗地主,当我们抓到一 手乱牌时,我们就要按照大小梳理扑克,30秒后, 扑克梳理完毕,4条3,5条s,哇塞......  回忆一下,俺们当时是怎么梳理的. 最左一张牌是3,第二张牌是5,第三张牌又是3, 赶紧插到第一张牌后面去,第四张牌又是3,大喜,赶紧插到第二张后面去, 第五张牌又是3, 狂喜,哈哈,一门炮就这样产生了. 怎么样,生活中处处都是算法,早已经融入我们的生活和 血液. 下面就上图说明: 看这张图不知道大家可否理解了,在插入排

Shell排序算法:一种经过改良的插入排序算法

Shell排序算法最初是由D.L Shell于1959年提出,假设要排序的元素有n个,则每个进行插入排序是 并不是所偶的元素同时进行,而是去一段间隔. Shell首先将间隔设定为n/2,然后跳跃的进行插入排序,再来将间隔设定为n/4,跳跃进行排序动作 ,再来设定时间间隔为n/8.n/16,知道间隔为1之后的最后一次排序终止,由于上一次的排序动作都会 将固定间隔内的元素排序好,所以当间隔为1之后的最后一次排序终止,由于上一次的排序动作都会将 固定间隔内的元素排序好,所以当间隔越来越小时,某些元素位