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

设计一个算法,用最少的时间在顺序表中找到x,若找到,与后继交换,找不到插入到顺序表中,任保持有序。

题目:线性表(a1,a2.........an)中的元素递增有序且按照顺序存储在计算机中。设计一个算法,用最少的时间在顺序表中查找数值为x的元素,若找到,则将其与后继元素位置相交换,若找不到,将其插入到顺序表中,任保持递增有序。

思想:最少时间找到,则使用折半查找进行寻找x,确定x是否在表中。查找结束后,进行交换后继或者插入。

代码:

//折半查找 
int HalfSearsh(SqLlist &L,ElemType x){int mid,low=0,high=L.length-1;if(low<=higt){mid=(low+higt)/2;if(L.data[mid]==x){//查找成功 return mid;}else if (L.data[mid]<x){low = mid + 1;//右侧找 }else{higt = mid - 1;//左侧找 }}return higt;//查找失败,最后一个小于x的值的下标为hight 
}
//交换 
void swap(ElemType &a,ElemType &b){int temp;temp=a;a=b;b=temp
}
//插入 
int Insert(SqList &L,int index,ElemType x){if(index<0 || index>L.length) {return false;}for(int i=L.length-1;i>=index;i--){L.data[i+1]=index[i];//后移动 }L.data[i+1]=x;//插入 L.length++;return true;} 
void SearchExchangeInsert(SqList &L,ElemType x){int XIndex=HalfSearsh(L,x);//折半查找元素x//查找成功,与后继进行交换if(L.data[XIndex]==x){if(XIndex != L.length-1) {//x为最后一个元素时,不需要交换 swap(L.data[XIndex],L.data[XIndex+1]) ;	} else{//没有找到,则在对应的位置插入x Insert(L,XIndex+1,x);}}

时间复杂度O(logn) 到 O(n) 之间,具体取决于 x 是否在列表中;空间复杂度O(1)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • yosys-f4pga-plugin编译教程
  • springboot物流信息管理系统 —计算机毕业设计源码23895
  • 知识管理与时间管理
  • 零售数字化:基于会员、商品和导购的智能决策
  • BeautifulSoup:Python网页解析库详解
  • 2.5G网络(通常指2.5G以太网,即2500BASE-X)的网络变压器在设计和应用上有几个关键方面
  • 《算法竞赛进阶指南》0x32_2约数
  • OpenCV开发笔记(七十九):基于Stitcher类实现全景图片拼接
  • SQL-多表查询
  • Linux系统应用(3)——编辑器vim
  • Nginx: 缓存, 不缓存特定内容和缓存失效降低上游压力策略及其配置示例
  • 《机械管理开发》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • JVM中篇:字节码与类的加载篇-04-再谈类的加载器
  • 计算机的分级存储:寄存器、cache L1 L2 L3、内存(主存)、磁盘(disk/外存/硬盘/持久化存储)
  • C语言典型例题55
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • HTML中设置input等文本框为不可操作
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • php的插入排序,通过双层for循环
  • Promise面试题2实现异步串行执行
  • Python进阶细节
  • TCP拥塞控制
  • Vim 折腾记
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 当SetTimeout遇到了字符串
  • 高度不固定时垂直居中
  • 诡异!React stopPropagation失灵
  • 聊聊flink的TableFactory
  • 前嗅ForeSpider教程:创建模板
  • 一些关于Rust在2019年的思考
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • #《AI中文版》V3 第 1 章 概述
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #在 README.md 中生成项目目录结构
  • (55)MOS管专题--->(10)MOS管的封装
  • (ibm)Java 语言的 XPath API
  • (Python) SOAP Web Service (HTTP POST)
  • (rabbitmq的高级特性)消息可靠性
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (一)项目实践-利用Appdesigner制作目标跟踪仿真软件
  • (转)Mysql的优化设置
  • ***测试-HTTP方法
  • ***详解账号泄露:全球约1亿用户已泄露
  • . NET自动找可写目录
  • .cn根服务器被攻击之后
  • .gitignore文件_Git:.gitignore
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .Mobi域名介绍
  • .NET 4.0中的泛型协变和反变
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET 依赖注入和配置系统
  • .NET序列化 serializable,反序列化
  • /etc/sudoers (root权限管理)
  • @FeignClient注解,fallback和fallbackFactory
  • @RestController注解的使用