1.插入排序的基本概念
2.//注意,i<n-1,并不是i<n,如果将n-1换成n,则会引起越界的问题。
void InsertSort(int* a, int n)
{
for (int i = 0; i < n - 1; ++i)
{
int end = i;
int temp = a[end + 1];
while (a[end] >= 0)
{
if (a[end] > temp)
{
a[end + 1] = a[end];
--end;
}
else
{
break;
}
a[end + 1] = temp;
}
}
}
创建完插入排序的函数后,我们还需要一个定义一个PrintArray函数,用来打印数组的值
void PrintArray(int* a, int n)
{
for (int i = 0; i < n; ++i)
{
printf("%d ", a[i]);
}
printf("\n");
}
最后,定义一个TestInsertSort函数用来排序我们所需要的数组
void TestInsertSort()
{
int a[] = { 8,9,5,4,6,7,3,8,12,15 };
InsertSort(a, sizeof(a) / sizeof(int));
PrintArray(a, sizeof(a) / sizeof(int));
}
sizeof(a) / sizeof(int)用于计算数组中包含整型数字的个数,然后调用InsertSort函数进行排序,最后得出运行结果。
源代码如下:
#include<stdio.h>
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 = 0; i < n - 1; ++i)
{
int end = i;
int temp = a[end + 1];
while (a[end] >= 0)
{
if (a[end] > temp)
{
a[end + 1] = a[end];
--end;
}
else
{
break;
}
a[end + 1] = temp;
}
}
}
void TestInsertSort()
{
int a[] = { 8,9,5,4,6,7,3,8,12,15 };
InsertSort(a, sizeof(a) / sizeof(int));
PrintArray(a, sizeof(a) / sizeof(int));
}
int main()
{
TestInsertSort();
return 0;
}
这就是我所介绍的插入排序法,如有错误,评论区帮忙支出,新手小白刚入门,见谅