栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数组-多次翻转

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数组-多次翻转

题目

题目来源于王道考研-数据结构2023版P31-第08题

算法思想

先对两个线性表各自进行翻转,在对整体的数组进行翻转,共三次翻转

实现原理

创建一个函数实现翻转功能,在主方法里调用三次翻转函数

代码
#include 
typedef int ElemType; 

void Reverse(ElemType A[], int l, int r) { //左右指针分别始末下标
	ElemType temp;  //中间变量
	for (int i = l; i <= (l + r) / 2; i++) {  //  >>中间值的确定<<
		temp = A[i];
		A[i] = A[l + r - i];  // 要替换的两个位置的下标相加是定值(l+r)
		A[l + r - i] = temp;
	}
}
int main() {
	ElemType A[] = { 6,7,8,9,10,1,2,3,4,5,6 };
	Reverse(A, 0, 4);
	Reverse(A, 5, 9);
	Reverse(A, 0, 9);
	for (int i = 0; i <= 9; i++)
	{
		printf("%d ", A[i]);
	}
	return 0;
}
难点

本道题难点在于,对于翻转函数的for循环的循环条件的确定

真题考法

3)时间复杂度:O(p/2)+O[(n-p)/2]+O(n/2)   所以O(n)

空间复杂度O(1)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/935716.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号