当前位置: 首页 > ops >正文

26-数据结构-顺序表1

1. 合并两个有序顺序表为一个新的有序顺序表

函数原型

 

cpp

复制编辑

void mergeArray(SeqList &L, SeqList &L1, SeqList &L2);

功能说明
将两个递增有序顺序表 L1L2 合并成一个新的递增有序顺序表 L,并返回结果表。

算法思路

  • 使用双指针分别遍历两个顺序表。

  • 按照大小顺序插入新表中,保持递增有序。

  • 最后将未合并的剩余部分依次插入新表。


2. 删除有序顺序表中所有值重复的元素

函数原型

 

cpp

复制编辑

void deleteRepeatElem(SeqList &L);

功能说明
删除顺序表中所有值重复的元素,仅保留唯一值。

适用条件
顺序表为有序表(相同元素连续)。

算法思路

  • 使用快慢指针遍历数组。

  • 如果当前 fastslow 指向的值相等,则跳过重复项。

  • 否则,将当前 fast 元素赋值给 slow + 1,并更新 slow

  • 最后更新表长。


3. 将顺序表中所有负数放在非负数前面(不要求顺序)

函数原型

 

cpp

复制编辑

void reOrderArray(SeqList &L);

功能说明
重新排列顺序表,使得所有负数元素位于非负数元素之前。

算法思路

  • 快慢指针遍历顺序表。

  • 遇到负数时,将其与 slow 指向的位置交换,并将 slow 后移。

  • 这样能在一次遍历中完成负数前移操作,时间复杂度为 O(n)。


4. 将顺序表划分为左右两部分,满足左半部分所有值 < Ki,右半部分所有值 > Ki

函数原型

 

cpp

复制编辑

void sortKeylist(SeqList &L);

功能说明
将表中元素以某个关键字 Ki 为界进行划分,使得所有 < Ki 的元素在左侧,所有 > Ki 的元素在右侧。这里默认 Ki 是第一个元素。

算法思路

  • data[0] 为基准值。

  • 用两个指针遍历,如果当前值小于基准值,则交换至左侧,并移动分界指针。

  • 单趟遍历实现分割,时间复杂度为 O(n)。


总结

功能名称方法名时间复杂度空间复杂度特点
有序表合并mergeArrayO(n)O(1)需要两个有序顺序表
删除重复元素deleteRepeatElemO(n)O(1)适用于有序表
负数前移reOrderArrayO(n)O(1)原地交换,保持稳定性可改
关键字划分sortKeylistO(n)O(1)单次遍历实现原地划分
http://www.xdnf.cn/news/13605.html

相关文章:

  • 机器学习赋能的多尺度材料模拟与催化设计前沿技术
  • ABAP 上传 excel 报表
  • Vue3+TypeScript实现解释器模式
  • 使用 C/C++的OpenCV 裁剪 MP4 视频
  • Kafka 架构原理解析
  • 黑马教程强化day2-3
  • 深度学习破解图形验证码:从原理到99.9%识别率实战
  • Redisson + Lettuce 在 Spring Boot 中的最佳实践方案
  • HINet: Half Instance Normalization Network for Image Restoration论文阅读
  • CardiacNet:从超声心动图视频中学习重建用于心脏病评估的异常
  • Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型时序预测对比
  • 视频自动生成字幕原理和自动生成字幕的应用实例
  • 芝麻酱工作创新点分享2——mysql的窗口函数使用
  • oracle表数据误删除恢复(闪回操作)
  • 目标检测我来惹2-SPPNet
  • map()函数
  • Postgresql日常使用
  • 展开说说Android之Glide详解_使用篇
  • 38道Linux命令高频题整理(附答案背诵版)
  • 时序数据库Apache IoTDB核心技术深度解析
  • 每日一博 - JWT 安全实战指南
  • C++11 nullptr:从入门到精通
  • Kafka入门:解锁核心组件,开启消息队列之旅
  • UE5 C++ Rider 编程指南 2: 如何使用Live Template编程实时模板?
  • Lavazza拉瓦萨再度牵手兰博基尼汽车 百年咖啡注入超跑速度
  • 技术赋能——AI社媒矩阵营销工具如何重构社媒矩阵底层架构
  • PDF文件合并、删除特定页面的工具分享
  • Gemini 2.5 Pro 和Claude 3.7 理综物理真题,考研数学真题实战对比,国内直接使用
  • Springboot实现Java程序和线程池的优雅关闭
  • 暴雨服务器成功交付长沙市第四医院