1、插入排序
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。
插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
class Program
{
static void InsertSort(int []dataArray)
{
for (int i = 0; i < dataArray.Length; i++)
{
int iValue = dataArray[i];//i位置的值
bool insert = false;
//将i位置的值赋值给dataArray[i]
//依次与前面所有的元素进行比较,如果发现比i大的,就让它向后移动。
for (int j = i-1; j >=0; j–)//从i-1开始,
{
if (dataArray[j]>iValue)
{
dataArray[j + 1] = dataArray[j];//把当前的i值往后移动。
}
else
{
//如果当前值比i位置的值小,则不变。
dataArray[j + 1] = iValue;
insert = true;
break;
}
}
if (insert==false)
{
dataArray[0] = iValue;
}
}
}
static void Main(string[] args)
{
int[] data = new int[] { 12,36,1356,6,586,854,41,56};
InsertSort(data);
foreach (var item in data)
{
Console.Write(item + " ");
}
Console.ReadKey();
}
}
运行结果:
