7-8 插入有序数组 (20 分)\n一个长度为10的数组中输入n(0≤n≤9)个整数,这n个整数从小到大有序。再输入一个x,把它插入数组适当位置,使数组仍保持有序。(12分)要求:输入n,再以从小到大
时间: 2023-05-02 17:04:11 浏览: 73
将输入的n个整数插入一个长度为10的数组中,这n个整数的大小从小到大有序。再输入一个x,将其插入数组的适当位置中,使数组仍然有序。 (20分)(12分)要求:输入n,再以从小到大的顺序输入n个整数,再输入x,从小到大输出数组。
相关问题
一个长度为10的数组中输入n(0≤n≤9)个整数,这n个整数从小到大有序。再输入一个x,把它插入数组适当位置,使数组仍保持有序。
可以使用插入排序的思想,从数组的末尾开始比较,如果新插入的数比当前数小,则将当前数往后移一位,直到找到一个比新数小的位置,将新数插入该位置即可。具体步骤如下:
1. 输入n和数组a[10],保证a[0]到a[n-1]是有序的。
2. 输入要插入的数x。
3. 从数组的末尾开始比较,如果新插入的数比当前数小,则将当前数往后移一位,直到找到一个比新数小的位置。
4. 将新数插入该位置,即a[i+1]=x。
5. 输出插入后的数组a。
示例代码如下:
#include <stdio.h>
int main()
{
int n, a[10], x, i;
printf("请输入n和数组a[10]:\n");
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
printf("请输入要插入的数x:\n");
scanf("%d", &x);
for (i = n - 1; i >= 0; i--)
{
if (a[i] > x)
{
a[i + 1] = a[i];
}
else
{
break;
}
}
a[i + 1] = x;
n++;
printf("插入后的数组为:\n");
for (i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
将数字按序插入数组\n\n有10-90这9个整数,已按升序存放于长度为10的一维数组中。要求将一整数35插入其中,并保持数组元素仍然有序。
可以使用插入排序的思想,从数组的末尾开始比较,如果待插入的数比当前位置的数小,则将当前位置的数后移一位,直到找到一个位置使得待插入的数比它前面的数大,比它后面的数小,然后将待插入的数插入到这个位置。
具体实现可以参考以下代码:
int arr[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90};
int n = 9; // 数组长度
int x = 35; // 待插入的数
// 从数组末尾开始比较
for (int i = n - 1; i >= ; i--) {
// 如果待插入的数比当前位置的数小,则将当前位置的数后移一位
if (arr[i] > x) {
arr[i + 1] = arr[i];
}
// 找到了待插入的位置
else {
arr[i + 1] = x;
break;
}
}
// 如果待插入的数比数组中所有数都小,则插入到数组的第一个位置
if (arr[] > x) {
arr[] = x;
}
// 输出结果
for (int i = ; i < n + 1; i++) {
cout << arr[i] << " ";
}
// 输出:10 20 30 35 40 50 60 70 80 90