用C语言写实验7-1-1 简化的插入排序 题目描述 本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。 输入 输入在第一行先给出非负整数N(<=10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。 输出 在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。
时间: 2023-07-16 11:16:25 浏览: 90
```c
#include <stdio.h>
int main()
{
int n, a[11], x, i, j;
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
scanf("%d", &x);
for(i = 0; i < n; i++)
{
if(x <= a[i])
{
for(j = n-1; j >= i; j--)
a[j+1] = a[j];
a[i] = x;
break;
}
}
if(i == n)
a[i] = x;
for(i = 0; i < n+1; i++)
printf("%d ", a[i]);
return 0;
}
```
相关问题
用C语言写实验7-1-1 简化的插入排序 题目描述 本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。 输入 输入在第一行先给出非负整数N(<=10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。 输出 在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。
以下是实现简化插入排序的示例代码:
```c
#include <stdio.h>
int main()
{
int n, i, j, x;
int a[11];
/* 读入数据 */
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
scanf("%d", &x);
/* 插入排序 */
for (i = n; i >= 0; i--)
{
if (x < a[i-1])
a[i] = a[i-1];
else
break;
}
a[i] = x;
/* 输出结果 */
for (i = 0; i < n+1; i++)
printf("%d ", a[i]);
return 0;
}
```
该代码的思路是首先读入输入数据,然后从序列末尾开始向前遍历,如果待插入的数小于当前数,就将当前数后移。当找到第一个大于等于待插入数的位置时,就将待插入数插入该位置。最后输出结果序列即可。
C语言本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。
这道题可以用插入排序的思想来解决。假设原本的有序序列为a,需要插入的整数为x。我们从序列的末尾开始,将每个比x大的数都往后移动一位,直到找到一个比x小的数或者序列已经到达开头。然后将x插入到它后面的位置。
下面是C语言的代码实现:
```c
#include <stdio.h>
void insert(int a[], int n, int x) {
int i;
for (i = n - 1; i >= 0 && a[i] > x; i--) {
a[i + 1] = a[i];
}
a[i + 1] = x;
}
int main() {
int a[] = {1, 3, 4, 6, 8};
int n = 5;
int x = 5;
insert(a, n, x);
for (int i = 0; i < n + 1; i++) {
printf("%d ", a[i]);
}
return 0;
}
```
输出结果为:1 3 4 5 6 8。
在这个例子中,我们将整数5插入到了有序序列{1, 3, 4, 6, 8}中。最后得到的序列仍然是有序的。
阅读全文