#include<iostream>
using namespace std;
#define ARRAY_LENGTH 9
int main(){extern void shiftRight(int *arr ,int begin ,int k);extern void show(int *arr ,int length);int arr[]={1,2,3,4,5,6,7,8,9};cout<<"循环移位前:"<<endl;show(arr,ARRAY_LENGTH);shiftRight(arr,ARRAY_LENGTH,2);//循环移动2位cout<<"循环移位后:"<<endl;show(arr,ARRAY_LENGTH);
}/*
将arr数组中[begin ,end]中的数据逆序
*/
void reverse(int *arr ,int begin ,int end){int temp=0;while(begin <end){temp=arr[begin];arr[begin]=arr[end];arr[end]=temp;begin++;end--;}
}
void shiftRight(int * arr ,int length ,int k){k=k%length;//移动k位与移动(k+n*length)位相同reverse(arr,0,length-k-1);//逆序前(length-k)位reverse(arr ,length-k,length-1);//逆序后k位reverse(arr ,0,length-1);//全部逆序
}
void show(int *arr ,int length){for(int i=0;i<length;i++){cout<<arr[i]<<"\t";}cout<<endl;
}

循环右移,要求时间复杂度为O(n)且尽可能的少使用辅助空间相关推荐

  1. 方阵循环右移c语言,C语言第二次实验报告 - osc_zfz30hgc的个人空间 - OSCHINA - 中文开源技术交流社区...

    #一.实验题目,设计思路与实现方法 题目一 11-6 方阵循环右移(20 分) 本题要求编写程序,将给定n×n方阵中的每个元素循环向右移m个位置,即将第0.1.⋯.n−1列变换为第n−m.n−m+1. ...

  2. PAT (Basic Level) Practice1008 数组元素循环右移问题

    1008 数组元素循环右移问题 一.题目 一个数组A中存有N(>0)N(>0)N(>0)个整数,在不允许使用另外数组的前 提下,将每个整数循环向右移M(≥0)M(≥0)M(≥0)个位 ...

  3. 【步步惊心】数组循环右移

    设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量. 不合题意的解法如下: 我们先试验简单的办法,可以每次将数组中的元素右移一位,循环K次.abcd ...

  4. (C++)1008 数组元素循环右移问题

    #include<cstdio> //注意:不允许使用另外数组,序列结尾不能有多余空格,不能直接认为right<n //1.读入数组长度,和右移位数,读入数组 //2.未必要对实际数 ...

  5. java byte 循环左移 循环右移 rotateLeft rotateRight

    java byte 循环左移 循环右移 rotateLeft rotateRight 1.概念. 循环左移: eg1:byte in = (byte) 0x01;[0000 0001]则循环左移2位后 ...

  6. Basic Level 1008. 数组元素循环右移问题 (20)

    一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1--AN-1)变换为(AN-M -- AN-1 A0 ...

  7. 实验8.1 指针与数组 6-6 数组循环右移

    本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置. 函数接口定义: int ArrayShift( int a[], int ...

  8. 7-1 数组元素循环右移问题 (20 分)

    7-1 数组元素循环右移问题 (20 分) 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A​1 ⋯A​N−1​​ ...

  9. PAT (Basic Level) Practice (中文)1008 数组元素循环右移问题 (20 分)

    题目 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A​0​​ A​1​​ ⋯A​N−1​​ )变换为(A​N−M​​ ...

最新文章

  1. 此心拖泥带水,是人生最苦处
  2. matlab之unwrap函数
  3. ubuntu下 显示no module named “lib“或 “lib.xxx“
  4. GDCM:gdcm::Value的测试程序
  5. Java领域的对象如何传输-如何解决报错的问题呢?
  6. 【渝粤题库】陕西师范大学201941 Java程序设计 作业(专升本)
  7. 996. Number of Squareful Arrays
  8. jhipster 配置 mysql_JHipster 基础使用
  9. Xcode 4.2 中的Automatic Reference Counting (ARC)
  10. java契约_基于契约式设计的Java编译器实现
  11. Android Service用法知识点的讲解
  12. OpenCV.js 快速入门指南
  13. 计算机九宫格游戏怎么玩,《九宫格数独》怎么玩 数独玩法介绍
  14. mac 如何安装/运行 kakfa
  15. 照片模糊怎么办?教你简单三步瞬间修复照片清晰度!
  16. Python Web项目
  17. 传奇服务器包裹元宝数量显示,GOM传奇服务端测试记录元宝,传奇GM版本库测试区记录元宝数量教程...
  18. 中控考勤机使用 zkemkeeper SDK订阅考勤数据事件失效解决方式
  19. 互联网废品回收+废品回收小程序开发这些实际功能要有
  20. camunda 多租户

热门文章

  1. windows mobile+webservice+mysql
  2. delegate和event(转载too)
  3. 搜索引擎优化不是网页标签优化
  4. [EffectiveC++]item22:Declare data members private
  5. 转:MySQL史上最全性能优化方式
  6. 【bzoj1304】[CQOI2009]叶子的染色 树形dp
  7. 获取指定长度的随机字符串
  8. *2-3-7-加入field_automation机制
  9. python 上传文件下载图片
  10. eclipse error pages打红X的解决方法