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

26数据结构-顺序表

📌有序顺序表的合并

#define MAX_SIZE 20
struct SeqList
{int data[MAX_SIZE];int length;
};
void mergeArray(SeqList &L1,SeqList &L2,SeqList &L)
{int i=0,j =0;while(i<L1.length && j<L2.length){if(L1.data[i]<L2.data[j])L.data[length++] = L1.length[i++];elseL.data[length++] = L2.length[j++];}while(i<L1.length){L.data[length++] = L1.length[i++];}while(i<L2.length){L.data[length++] = L2.length[j++];}
}

📌删除有序顺序表重复元素

void deleteRepeatELement(SeqList &L)
{int slow =0,fast=1;while(fast<L.length){if( L.data[slow] == L.data[fast]){fast++;}else if( L.data[slow] != L.data[fast]){L.data[++slow] =L.data[fast++];}}L.length =slow+1;
}

通过快慢指针的追赶,将不重复的元素 "前移",覆盖掉重复元素,最终实现原地去重,时间复杂度为 O (n),空间复杂度为 O (1)。

📌编写算法,对n个关键字取整数值的记录序列进⾏整理,以使得所有关键字为负数的记录排在关键字为⾮负数的记录之前。

void reOrderArray(SeqList &L)
{int i=0,j=0;while(j<L.length){if(L.data[j]<0){if(i!=j){int tmp = L.data[i];L.data[i] = L.data[j];L.data[j] = tmp;}i++;j++;}elsej++;}
}

📌设有⼀组初始记录关键字序列(K1,K2,…,Kn),要求设计⼀个算法能够在O(n)的时间复杂度内将线性表划分成两部分,其中左半部分的每个关键字均⼩于Ki,右半部分的每个关键字均⼤于Ki。

//⽅法⼀:双指针
void spliceArrayother(SeqList &L)
{int left = 0;           //左半部分的索引。int right = L.length -1; //右半部分的索引while( left <= right ){while(L.data[left] < key)left ++;while(L.data[right] > key)right --;//如果left <=right 交换if(left <=right){int tmp = L.data[left];L.data[left] =L.data[right];L.data[right] = tmp;left ++;right--;}}
}
//⽅法⼆:类似快排
void spliceArray(SeqList &L)
{int key;int i = 0,j=0;while(j < L.length){if(L.data[j]> key){if(i != j){int tmp = L.data[i];L.data[i] = L.data[j];L.data[j] = tmp;}i++;j++;}j++;}
}
http://www.xdnf.cn/news/16761.html

相关文章:

  • 【数据结构与算法】21.合并两个有序链表(LeetCode)
  • 如何将消息转移到新 iPhone
  • 深入剖析Spring IOC容器——原理、源码与实践全解析
  • Linux---编辑器vim
  • 嵌入式学习笔记-MCU阶段-DAY10ESP8266模块
  • 初识微服务
  • 飞算 JavaAI 中 SQL 另存为脚本功能详解
  • ZKmall开源商城微服务架构电商平台:服务注册与配置中心设计
  • 充电桩与照明“联动”创新:智慧灯杆破解新能源基建难题
  • 微服务消息队列之RabbitMQ,深入了解
  • 【unity小技巧】封装unity适合2D3D进行鼠标射线检测,获取鼠标位置信息检测工具类
  • Java设计模式之行为型模式(解释器模式)实现方式详解
  • Elasticsearch 集群管理核心 API 指南:健康、状态、分片诊断与运维实战
  • 调试 Rust 生成的 WebAssembly
  • 工业级蓝光三维扫描仪:汽车零部件高精度检测的利器
  • Python LRU缓存应用与示例
  • 守护数字核心:主机安全的重要性与全方位防护指南
  • zabbix的PostgreSQL监控模板中文环境采集问题处理
  • JsHook入门
  • Nginx 来正确地托管网站服务
  • 汇川ITS7100E触摸屏交互界面开发(二)界面开发软件使用记录
  • 使用python连接MongoDB
  • 【RAG 检索排序详解】RRF vs Reranker:原理、区别与实战应用
  • 编程算法:驱动技术创新与业务增长
  • 【Linux】System V - 责任链模式与消息队列
  • 【LeetCode 热题 100】155. 最小栈
  • LVGL 使用自定义字体
  • VS Code中配置使用slint(Rust)的一个小例子
  • 【PHP 构造函数与析构函数:从基础到高级的完整指南】
  • 数据库小知识