算法描述

1.假定数组第一位为有序序列,抽出后一位元素与有序序列中元素依次比较;

2.如果有序序列元素大于抽出元素,将该元素向后移位;

3.重复前面步骤依次抽取无序序列中首位元素进行比较,直到所有数值排序完成;

代码实现

  1. /*
  2. 例如:对数组:{ 2,7,6,3,1 }进行比较
  3.  
  4. 第一轮:{ 2,7,6,3,1 } :共比较一次
  5. 第二轮:{ 2,6,7,3,1 } :共比较二次
  6. 第三轮:{ 2,3,4,7,1 } :共比较三次
  7. 第四轮:{ 1,2,3,6,7 } :共比较四次
  8. */
  9. public void Insert(int[] arr)
  10. {
  11. int number;
  12. int numIndex;
  13.  
  14. for (int i = ; i < arr.Length; i++)
  15. {
  16. number = arr[i];
  17. numIndex = i - ;
  18.  
  19. while (numIndex >= && number < arr[numIndex])
  20. {
  21. arr[numIndex + ] = arr[numIndex];
  22. numIndex--;
  23. }
  24.  
  25. arr[numIndex + ] = number;
  26.  
  27. Console.Write("插入排序:");
  28. foreach (int item in arr)
  29. {
  30. Console.Write(item + " ");
  31. }
  32. Console.WriteLine();
  33. }
  34.  
  35. }

完整代码

  1. using System;
  2.  
  3. namespace InsertSortApplication
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. var setArray = new SetArray();
  10. var insertSort = new InsertSort();
  11.  
  12. int[] arr = setArray.GetArray();
  13. insertSort.Insert(arr);
  14.  
  15. Console.ReadLine();
  16. }
  17. }
  18.  
  19. class SetArray
  20. {
  21. public int[] GetArray()
  22. {
  23. int length;
  24. int[] arr;
  25.  
  26. Console.WriteLine("请输入数组长度:");
  27. length = Convert.ToInt32(Console.ReadLine());
  28.  
  29. arr = new int[length];
  30.  
  31. for (int i = ; i <= length - ; i++)
  32. {
  33. Console.Write("请输入数值第{0}位数值:", i);
  34. arr[i] = Convert.ToInt32(Console.ReadLine());
  35. }
  36.  
  37. Console.Clear();
  38.  
  39. Console.Write("arr[] = {");
  40. foreach (int item in arr)
  41. {
  42. Console.Write(item + " ");
  43. }
  44. Console.Write("}\n");
  45. return arr;
  46. }
  47. }
  48.  
  49. class InsertSort // 插入排序
  50. {
  51. public void Insert(int[] arr)
  52. {
  53. int number;
  54. int numIndex;
  55.  
  56. for (int i = ; i < arr.Length; i++)
  57. {
  58. number = arr[i];
  59. numIndex = i - ;
  60.  
  61. while (numIndex >= && number < arr[numIndex])
  62. {
  63. arr[numIndex + ] = arr[numIndex];
  64. numIndex--;
  65. }
  66.  
  67. arr[numIndex + ] = number;
  68. }
  69.  
  70. Console.Write("插入排序:");
  71. foreach (int item in arr)
  72. {
  73. Console.Write(item + " ");
  74. }
  75. Console.WriteLine();
  76.  
  77. }
  78. }
  79. }

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. 第一次创建svn的项目的使用方法

    1.第一步.在服务器上创建svn项目,将开发人人员你的账号密码添加上去. 2.第二步.开始在本地创建一个文件夹,点文件夹,右键->tortoisSVN->repo-brower 填写svn ...

  2. apache hadoop 伪分布式安装

    1. 准备工作 1.1. 软件准备 1.安装VMWare 2.在VMWare上安装CentOS6.5 3.安装XShell5,用来远程登录系统 4.通过rpm -qa | grep ssh 检查cen ...

  3. Ubuntu-Python2.7安装 scipy,numpy,matplotlib

    sudo apt-get install python-scipy sudo apt-get install python-numpy sudo apt-get install python-matp ...

  4. UI布局术语

    horizontal, vertical top, left, bottom, right UIEdgeInsets margin与padding Interpreting Values Values ...

  5. 15Oracle Database 索引

    Oracle Database 索引 索引 索引的目的是加快查询速度,就像一本数据的目录一样.建立索引的原则:非常少的DML操作:经常出现在where语句中的字段 2.20.1.建立索引 l  对t_ ...

  6. svn无法显示日期和作者

    当遇到这种情况,只要把这个read改为none就可以显示了  亲测绝对管用

  7. freemarker使用map替换ftl中相关值

    ftl文件demo01.ftl <html> <head> <title>Welcome!</title> </head> <body ...

  8. Java第九周总结

  9. 洛谷 2633 BZOJ 2588 Spoj 10628. Count on a tree

    [题解] 蜜汁强制在线... 每个点开一个从它到根的可持久化权值线段树.查询的时候利用差分的思想在树上左右横跳就好了. #include<cstdio> #include<algor ...

  10. Springboot druid监控配置

    @Configuration public class DataSourceConfig { @Bean public ServletRegistrationBean statViewServlet( ...