有一个已非好序的数组,要求输入一个数m,按原来排序的规律将它插入数组中。^---^一个数组中的值按逆序重新存放。例如,原来顺序为8.6,5,4,1。要求改为1,4,5,6,8。^---^6输出以下的杨
时间: 2024-04-05 09:25:47 浏览: 50
Q1: 有一个已非好序的数组,要求输入一个数m,按原来排序的规律将它插入数组中。
A1: 可以使用插入排序的方法,从数组的第一个元素开始遍历,找到第一个比m大的元素,将m插入到该元素之前即可。具体实现如下:
```c
#include <stdio.h>
int main() {
int a[11] = {1, 2, 3, 4, 5, 7, 8, 9, 10, 11};
int i, j, m;
printf("输入一个数:\n");
scanf("%d", &m);
for (i = 0; i < 11; i++) {
if (m < a[i]) {
for (j = 10; j >= i; j--) {
a[j + 1] = a[j];
}
a[i] = m;
break;
}
}
if (i == 11) {
a[10] = m;
}
printf("排序后:\n");
for (i = 0; i < 11; i++) {
printf("%d ", a[i]);
}
return 0;
}
```
相关问题
已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中
可以使用插入排序算法来实现已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。具体步骤如下:
1. 定义一个已排好序的数组和一个待插入的数m。
2. 遍历已排好序的数组,将待插入的数m与数组中的每个数进行比较,找到第一个比m大的数的位置i。
3. 将数组中i及其后面的数都向后移动一位,腾出位置i。
4. 将待插入的数m插入到位置i上。
5. 输出插入后的数组。
下面是C语言的实现代码:
```c
#include <stdio.h>
int main() {
int a[11] = {1, 3, 5, 7, 8, 9, 10, 11, 13, 14};
int i, j, m;
printf("Enter an integer number: ");
scanf("%d", &m);
// 找到第一个比m大的数的位置i
for (i = 0; i < 10; i++) {
if (m < a[i]) {
break;
}
}
// 将i及其后面的数都向后移动一位
for (j = 9; j >= i; j--) {
a[j + 1] = a[j];
}
// 将待插入的数m插入到位置i上
a[i] = m;
// 输出插入后的数组
printf("\n插入后的数组:\n");
for (i = 0; i < 11; i++) {
printf("%5d", a[i]);
}
return 0;
}
```
用c语言解决问题:有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中
以下是用C语言解决问题的代码:
```c
#include <stdio.h>
int main() {
int a[11] = {1, 3, 5, 7, 8, 9, 10, 11, 13, 14};
int i, t, m;
printf("Enter an integer number:");
scanf("%d", &m);
for (i = 0; i < 11; i++) {
if (m < a[i]) {
t = m;
m = a[i];
a[i] = t;
} else if (m >= a[9]) {
a[10] = m;
}
}
printf("\n插入后的数组:\n");
for (i = 0; i < 11; i++) {
printf("%5d", a[i]);
}
return 0;
}
```
阅读全文