C#之插入排序
2024-08-27 12:10:34
算法描述
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(); }
}
}
最新文章
- Mysql 的特殊之处
- Azure PowerShell (12) 通过Azure PowerShell创建SSH登录的Linux VM
- DIY操作系统(一)
- YARN中自己总结的几个关键点
- File缓存
- linux links and lynx
- 脚本编程中的test、bash调试、变量计算、参数
- thinkphp 访问其它控制器模板
- 【Mysql学习笔记】浅析mysql的binlog
- Python字符串连接的5种方法
- JAVA訪问URL
- canvas的beginPath和closePath分析总结,包括多段弧的情况
- 讨论LSTM和RNN梯度消失问题
- 第一阶段项目(3body)
- Linux 新手应该知道的一些求助命令
- 三元运算符 与 return
- MyBaits集合的嵌套 Select 查询
- Adobe Flash Player 29.0.0.140官方正式版
- 用golang chromedp 操作已经打开的chrome浏览器
- Android小知识汇总
热门文章
- es6之Proxy,Reflect
- 在Redux中使用插件createAction之后
- Eclipse+JUnit+Selenium配置
- Server 2008 R2 事件查看器实现日志分析
- HDU_6016_(Bestcoder round #92 1002)_(dfs)(暴力)
- unittest自定义运行全量case or 运行指定的单个或多个case
- js延时加载的方法
- 生成count个[0-n)不重复的随机数
- zabbix部署-版本3.2.6
- 微信小程序 setData动态修改数据数组的值