数组循环左移——使用额外数组太麻烦,三次交换直接搞定!
发布日期:2021-05-06 03:52:55 浏览次数:26 分类:技术文章

本文共 446 字,大约阅读时间需要 1 分钟。

数组循环左移

题目

在这里插入图片描述

答案

#include
#include
using namespace std;void Swap(int a[],int left ,int right){ for(int i=left;i<=(left+right)/2;i++) swap(a[i],a[left+right-i]);}int main(){ int n,m; scanf("%d %d",&n,&m); int a[n],i; for(i=0;i

PTA测试点

在这里插入图片描述

注意

Swap函数中的判断条件i<=(left+right)/2里的=要记得写

算法分析

本题只需进行三次交换就可以实现数组的循环左移

我们将题目中的m换为5,进行举例说明(其它情况同理,m>n/2也算是一种特殊情况)

8 51 2 3 4 5 6 7 8

交换过程如下(黑色数字表示不动,红色数字表示交换的数字)

在这里插入图片描述

就这么简单!觉得还不错的同学可以点上一个宝贵的赞,谢谢大家!

上一篇:PTA使用{0}的方式初始化数组(C语言),出现编译错误的解决方法
下一篇:数组循环右移——使用额外数组太麻烦,三次交换直接搞定!

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月04日 07时36分02秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章