已知一个顺序表L,其中的元素递增有序排列,设计一个算法,插入一个元素x(x为t型)后保持该顺序表仍然递增有序排列(假设插入操作总能成功)c实现。
/********************************************************************************************************
*
* file name: Zqh_splist_4.22.1.c
* author : keyword2024@163.com
* date : 2024/04/22
* function : 已知一个顺序表L,其中的元素递增有序排列,设计一个算法,插入一个元素x(x为t型)后保持该顺序表仍然递增有序排列(假设插入操作总能成功)。
* note : 考研题
*
* Copyright (c) 2023-2025 keyword2024@163.com All right Reserved
* ******************************************************************************************************/
#define MAX_SIZE 100
// 定义顺序表结构体
typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;
//优化前
//递增排序
void SeqList_Insert(SeqList *L,int x)
{
int temp = -1; //记录待插入元素的下标
//遍历顺序表,找到插入位置,比较元素
for (int i = 0; i <= last; ++i)
{
if (x < L[i])
{
temp = i;
break;
}
}
if( -1 == temp)
{
L[last+1] = x;
return;
}
//把待插入位置的后继元素向后移动
for (int i = last; i >= temp; i--)
{
L[i+1] = L[i];
}
L[temp] = x;
}
// 优化后
// 在递增有序的顺序表中插入元素 x
void SeqList_Insert(SeqList *L, int x) {
int i, j;
for (i = 0; i < L->length; i++) {
if (L->data[i] >= x) {
break;
}
}
for (j = L->length; j > i; j--) {
L->data[j] = L->data[j - 1];
}
L->data[i] = x;
L->length++;
}
//在算法检测时,需要找特殊的情况,列如:0 表头 表尾 边界值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言