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

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

相关文章

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的路径

MySQL中SQL的执行顺序详解

《MySQL中SQL的执行顺序详解》:本文主要介绍MySQL中SQL的执行顺序,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql中SQL的执行顺序SQL执行顺序MySQL的执行顺序SELECT语句定义SELECT语句执行顺序总结MySQL中SQL的执行顺序

Pandas利用主表更新子表指定列小技巧

《Pandas利用主表更新子表指定列小技巧》本文主要介绍了Pandas利用主表更新子表指定列小技巧,通过创建主表和子表的DataFrame对象,并使用映射字典进行数据关联和更新,实现了从主表到子表的同... 目录一、前言二、基本案例1. 创建主表数据2. 创建映射字典3. 创建子表数据4. 更新子表的 zb

SpringBoot中配置文件的加载顺序解读

《SpringBoot中配置文件的加载顺序解读》:本文主要介绍SpringBoot中配置文件的加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot配置文件的加载顺序1、命令⾏参数2、Java系统属性3、操作系统环境变量5、项目【外部】的ap

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

java两个List的交集,并集方式

《java两个List的交集,并集方式》文章主要介绍了Java中两个List的交集和并集的处理方法,推荐使用Apache的CollectionUtils工具类,因为它简单且不会改变原有集合,同时,文章... 目录Java两个List的交集,并集方法一方法二方法三总结java两个List的交集,并集方法一

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相