欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > PTA:有序顺序表的插入

PTA:有序顺序表的插入

2025/9/26 12:23:42 来源:https://blog.csdn.net/2303_79480422/article/details/145797478  浏览:    关键词:PTA:有序顺序表的插入

请设计一个算法,在有序顺序表L中插入元素x,使得表依然有序,并输出新增元素后的表数据。

例如:
L的元素 1 3 5 7
插入新元素 4
输出 1 3 4 5 7
其中,L的长度不超过1000,当中的元素为非递减排序。

输入格式:

第一行输入L的长度
第二行输入L的元素
第三行输入要插入的元素x的值

输出格式:

输入插入元素后顺序表中各元素的值,值之间用一个空格间隔。

输入样例:

4
1 3 5 7
4

输出样例:

1 3 4 5 7 

代码

#include <stdio.h>int main() {int L[1001]; // 最大容量为1001int n, x;scanf("%d", &n);for (int i = 0; i < n; i++) {scanf("%d", &L[i]);}scanf("%d", &x);// 寻找插入位置int pos = 0;while (pos < n && L[pos] < x) {pos++;}// 后移元素for (int i = n; i > pos; i--) {L[i] = L[i - 1];}L[pos] = x;n++; // 更新表长// 输出结果for (int i = 0; i < n; i++) {printf("%d ", L[i]);}return 0;
}

算法思路

  1. 输入处理:读取顺序表的长度、元素以及待插入元素。
  2. 寻找插入位置:通过遍历顺序表找到第一个大于或等于待插入元素的位置。
  3. 元素后移:将插入位置后的所有元素后移一位,为待插入元素腾出空间。
  4. 插入元素并更新表长:将元素插入到正确位置,并更新顺序表长度。
  5. 输出结果:遍历顺序表并输出所有元素。

复杂度分析

  • 时间复杂度:O(n),最坏情况下需要遍历整个数组并移动所有元素。
  • 空间复杂度:O(1),除了输入输出外,仅使用了常数级别的额外空间。

该算法确保在插入元素后,顺序表依然保持非递减顺序,适用于题目给定的约束条件。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词