算法描述

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

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

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

代码实现

        /*
例如:对数组:{ 2,7,6,3,1 }进行比较 第一轮:{ 2,7,6,3,1 } :共比较一次
第二轮:{ 2,6,7,3,1 } :共比较二次
第三轮:{ 2,3,4,7,1 } :共比较三次
第四轮:{ 1,2,3,6,7 } :共比较四次
*/
public void Insert(int[] arr)
{
int number;
int numIndex; for (int i = ; i < arr.Length; i++)
{
number = arr[i];
numIndex = i - ; while (numIndex >= && number < arr[numIndex])
{
arr[numIndex + ] = arr[numIndex];
numIndex--;
} arr[numIndex + ] = number; Console.Write("插入排序:");
foreach (int item in arr)
{
Console.Write(item + " ");
}
Console.WriteLine();
} }

完整代码

using System;

namespace InsertSortApplication
{
class Program
{
static void Main(string[] args)
{
var setArray = new SetArray();
var insertSort = new InsertSort(); int[] arr = setArray.GetArray();
insertSort.Insert(arr); Console.ReadLine();
}
} class SetArray
{
public int[] GetArray()
{
int length;
int[] arr; Console.WriteLine("请输入数组长度:");
length = Convert.ToInt32(Console.ReadLine()); arr = new int[length]; for (int i = ; i <= length - ; i++)
{
Console.Write("请输入数值第{0}位数值:", i);
arr[i] = Convert.ToInt32(Console.ReadLine());
} Console.Clear(); Console.Write("arr[] = {");
foreach (int item in arr)
{
Console.Write(item + " ");
}
Console.Write("}\n");
return arr;
}
} class InsertSort // 插入排序
{
public void Insert(int[] arr)
{
int number;
int numIndex; for (int i = ; i < arr.Length; i++)
{
number = arr[i];
numIndex = i - ; while (numIndex >= && number < arr[numIndex])
{
arr[numIndex + ] = arr[numIndex];
numIndex--;
} arr[numIndex + ] = number;
} Console.Write("插入排序:");
foreach (int item in arr)
{
Console.Write(item + " ");
}
Console.WriteLine(); }
}
}

最新文章

  1. Mysql 的特殊之处
  2. Azure PowerShell (12) 通过Azure PowerShell创建SSH登录的Linux VM
  3. DIY操作系统(一)
  4. YARN中自己总结的几个关键点
  5. File缓存
  6. linux links and lynx
  7. 脚本编程中的test、bash调试、变量计算、参数
  8. thinkphp 访问其它控制器模板
  9. 【Mysql学习笔记】浅析mysql的binlog
  10. Python字符串连接的5种方法
  11. JAVA訪问URL
  12. canvas的beginPath和closePath分析总结,包括多段弧的情况
  13. 讨论LSTM和RNN梯度消失问题
  14. 第一阶段项目(3body)
  15. Linux 新手应该知道的一些求助命令
  16. 三元运算符 与 return
  17. MyBaits集合的嵌套 Select 查询
  18. Adobe Flash Player 29.0.0.140官方正式版
  19. 用golang chromedp 操作已经打开的chrome浏览器
  20. Android小知识汇总

热门文章

  1. es6之Proxy,Reflect
  2. 在Redux中使用插件createAction之后
  3. Eclipse+JUnit+Selenium配置
  4. Server 2008 R2 事件查看器实现日志分析
  5. HDU_6016_(Bestcoder round #92 1002)_(dfs)(暴力)
  6. unittest自定义运行全量case or 运行指定的单个或多个case
  7. js延时加载的方法
  8. 生成count个[0-n)不重复的随机数
  9. zabbix部署-版本3.2.6
  10. 微信小程序 setData动态修改数据数组的值