互换顺序表中的两个子表位置

2024-08-27 08:36

本文主要是介绍互换顺序表中的两个子表位置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题型一:假设一个表长为n的顺序表L中有两个分别为长度s子表S和长度为r子表R,S,R不相交。设计算法,实现S和R在L中的位置互换,并且互换后S和R的元素均为正序排列。

思想:先整个表进行逆转,然后对前面的子表进行逆转,最后对后面一个子表进行逆转。(例如:可以将两个子表看成12345abcde,对前面进行逆转后为edbca54321,再对后面进行逆转为abcde54321,最后对整进行逆转为abcde12345)

代码:

void reverse(Sqlist &L,int s,int e){if(e>L.length) return;//反转顺序表的氛围为s到ewhile(s<e){//对称位置做交换 swap(L.data[s],L.data[e]);s++;e--;}
} 
bool exchage(Sqlist &L,int s,int n){//if(L.length != n){//	return false;//}reverse(L,0,n-1);//逆转整个表 reverse1(L,0,s-1);//逆转前s个元素 reverse1(L,s,n-1);//逆转后n-s个元素 return true;}
void swap(ElemType &a,ElemType &b){int temp;temp=a;a=b;b=temp
}

时间复杂度O(n);空间复杂度O(1)

题型二:假设一个表长为n的顺序表L中有两个分别为长度s子表S和长度为r子表R,S,R不相交。设计算法,实现S和R在L中的位置互换,并且互换后S和R的元素均为逆序排列。

思想:将两个子表看成一个表,对表中的元素进行交换。首先是1与n交换,然后对2和n-1进行交换,以此类推,直到不能交换为止。

void reverse(Sqlist &L){int i=0;j=L.length-1;//开始时,i为顺序表的第一个元素 ,j为顺序表的最后一个元素 while(i<j){ElemType t = L.data[i];L.data[i] = L.data[j];L.data[j] = t;i++;j--;}} 

时间复杂度O(n);空间复杂度O(1)

这篇关于互换顺序表中的两个子表位置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111168

相关文章

Spring Bean初始化及@PostConstruc执行顺序示例详解

《SpringBean初始化及@PostConstruc执行顺序示例详解》本文给大家介绍SpringBean初始化及@PostConstruc执行顺序,本文通过实例代码给大家介绍的非常详细,对大家的... 目录1. Bean初始化执行顺序2. 成员变量初始化顺序2.1 普通Java类(非Spring环境)(

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

PyCharm如何更改缓存位置

《PyCharm如何更改缓存位置》:本文主要介绍PyCharm如何更改缓存位置的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm更改缓存位置1.打开PyCharm的安装编程目录2.将config、sjsystem、plugins和log的路径