using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 算法笔记
{
class Program
{
static List<int> tmp = new List<int> { 8, 3, 1, 21, 22, 421, 12, 42 };
static void InsertSort(List<int> tmp)
{
if (tmp.Count < 2)
return;
for (int i = 1; i < tmp.Count; i++)
{
if(tmp[i-1]>tmp[i]) //排序区第一次出现比目标数小的数字
{
int goal = tmp[i];
int j = i - 1;
while(j>-1&& goal < tmp[j]) //在排序区向前找比目标数字大的数,若一直有,则插入位置不断往前,直到找到跳出循环
{
tmp[j + 1] = tmp[j];
j --;
}
tmp[j+1] = goal; //因为上面最后一次循环中-- 了,所以索引要+1
foreach (var item in tmp)
{
Console.Write(item);
Console.Write(" ");
}
Console.WriteLine();
Console.WriteLine();
}
}
}
static void Main(string[] args)
{
InsertSort(tmp);
Console.ReadLine();
}
}
}
C# 插入排序Demo 附带详细注释
最新推荐文章于 2022-08-05 14:04:19 发布