1.插入排序
插入排序是经典排序算法之一,对我而言,不太习惯用它,因为冒泡排序写起来更简单,而当冒泡排序不管用的时候,就会直接使用快速排序了,但作为经典算法我们不能不会。
2.核心思想
3.代码实现
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void Printarray(int* a,int n)//打印数组
{
for (int i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
void Creativearray(int* a, int n)//创建数组,我用了随机数
{
srand(time(0));
for (int i = 0; i < n; i++)
{
a[i] = rand() % 50 + 1;
}
}
void Insert_sort(int* a, int n)
{
for (int i = 1; i < n; i++)//我们默认第一个数为有序
{
int key = a[i];
int j = i - 1;
while (j >= 0 && a[j] > key)//如果前面有比第一个元素大的
{
a[j + 1] = a[j];//移动数组,前面往后移
j--;
}
a[j+1] = key;//最后填上数
}
}
int main()
{
int a[10];
Creativearray(a, 10);
Printarray(a, 10);
Insert_sort(a, 10);
Printarray(a, 10);
return 0;
}
4.结果展示
30 21 4 16 14 14 38 38 13 37 4 13 14 14 16 21 30 37 38 38 D:\vs2022cprogram\Project1\x64\Debug\Project1.exe (进程 10096)已退出,代码为 0。 按任意键关闭此窗口. . .
5.总结
插入排序是我们必须要掌握的算法