就是在有序数组中插入一个数 使有序数组仍然有序
//直接插入排序
//就是在“有序的”数组条件下 插入一个数字使该数组仍然有序
//核心思想就是要找到合适的下标
//从后边向前遍历 直到找到小于等于他的数字
//如1,2,3,4,5,5,6,7,8 traget:2 (需要插入的数字)
// i i逐渐循环之后下标指在了小于等于它的位置上 所以将k放在它身后的空闲位置
//下面的自定义函数ZC()就是一边比较一边为要插入的值 腾出位置
#include<stdio.h>
void ZC(int arr[], int k)
{
int i = 8;//数组现有元素个数
while (arr[i] > k)//比他大的都向后挪动
{
arr[i + 1] = arr[i];
i--;
}
arr[i+1] = k;
}
//下面还可以改为动态数组 可自由输入“有序数组”
int main()
{
int traget = 0;
int arr[10] = { 1,2,3,4,5,5,6,7,8 };//既然要插入1个数字就要有足够的空间
printf("请输入你要插入的数字>");
scanf("%d", &traget);
ZC(arr, traget);
for (int i = 0; i < 10; i++)
{
printf("%d", arr[i]);
}
return 0;
}
算法很简单
加油铁汁~