自己输入一组数,然后再输入一个数实现插入算法c语言
时间: 2024-10-18 16:05:16 浏览: 15
C语言实现十大排序算法.rar
在C语言中,如果你想实现一个简单的插入排序算法,可以按照以下步骤操作:
首先,假设我们有一个数组`nums`,用户会输入一组数字,然后输入一个新数值`new_num`,我们需要在这个已排序的数组中找到合适的位置插入这个新数,保持数组的升序排列。以下是实现的一个基本版本的插入排序算法:
```c
#include <stdio.h>
void insertion_sort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int key = arr[i]; // 当前元素
int j = i - 1;
// 将大于key的元素向右移动
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key; // 插入到正确位置
}
}
int main() {
int n;
printf("请输入数组的元素个数:");
scanf("%d", &n);
int nums[n]; // 假设数组未初始化
printf("请输入数组的元素:\n");
for (int i = 0; i < n; i++) {
scanf("%d", &nums[i]);
}
int new_num;
printf("请输入要插入的新数:");
scanf("%d", &new_num);
insertion_sort(nums, n); // 对原数组进行插入排序
// 找到插入点,保持数组顺序
int insert_index = 0;
while (insert_index < n && nums[insert_index] < new_num) {
insert_index++;
}
// 插入新数
nums[insert_index] = new_num;
printf("插入新数后的数组是:\n");
for (int i = 0; i <= n; i++) {
printf("%d ", nums[i]);
}
return 0;
}
```
当你运行程序,它会让用户依次输入数组的元素和新数,然后对数组进行插入排序,并在适当的位置插入新数。
阅读全文