前言:
什么是插入排序?
插入排序实际上就是将一个数字按照大小顺序插入到已知的序列中去
一、直接插入排序
插入排序的代码如下:
void InsertSort(int* a, int n)
{
for (int i = 1; i < n; i++)
{
int end = i - 1;
int tmp=a[i];
while (end>=0)
{
if (tmp > a[end])
{
a[end + 1] = a[end];
end--;
}
else
{
break;
}
}
a[end + 1] = tmp;
}
}
我们建立一个完整的代码示例并打印结果,给大家看看效果
//插入排序
void PrintArray(int* a, int n)
{
for (int i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
void InsertSort(int* a, int n)
{
for (int i = 1; i < n; i++)
{
int end = i - 1;
int tmp = a[i];
while (end >= 0)
{
if (tmp > a[end])
{
a[end + 1] = a[end];
end--;
}
else
{
break;
}
}
a[end + 1] = tmp;
}
}
void TestInsertSort()
{
int a[] = { 1,2,4,7,8,2,5,3 };
PrintArray(a, sizeof(a) / sizeof(a[0]));
InsertSort(a, sizeof(a) / sizeof(a[0]));
PrintArray(a, sizeof(a) / sizeof(a[0]));
}
int main()
{
TestInsertSort();
return 0;
}
运行结果: