解法一:

先将数组前i个元素存在临时数组,在将余下的n-i个元素左移i个位置,最后将临时数组中的元素复制到后面i个位置

复杂度:

需移动i+(n-i)+i = i+n 次数组单元
需i个额外存储单元

解法二:

设计一个函数将数组向左移动一个位置,然后在调用函数i次

复杂度:

需移动i*n次数组单元
只需1个额外存储单元

解法三:

AB(A代表前i个元素,B代表后n-i个元素),先将A置换,在将B置换,最后将AB置换
AB -> A-1B -> A-1B-1 -> BA
算法如下:

#include <stdio.h>
void foreMove(int* a, int path, int n);
void reverse(int* a, int m, int n);
int main(void){int a[7] = {3,5,7,9,11,13,66};int i;foreMove(a, 5, 7);for(i=0; i<7; i++){printf("%d ",a[i]);}return 0;
}
void foreMove(int* a, int path, int n){reverse(a, 0, path-1);reverse(a, path, n-1);reverse(a, 0, n-1);
}
void reverse(int* a, int m, int n){int temp;while( m<n ){temp = *(a+m);*(a+m) = *(a+n);*(a+n) = temp;m++;n--;}
}

结果

复杂度:

需移动 i/2 + (n-i)/2 + n/2 = n 次数组单元
需1个临时交换存储单元

数组循环左移问题,将一个N个元素的数组向左移i个位置相关推荐

  1. c语言 数组循环移动,如何将一个数组的元素循环左移?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #define SIZE(a) (sizeof(a)/sizeof(a[0])) #define HBIT(a) (( ...

  2. php利用数组循环输出,php数组遍历,php循环输出数组

    php数组遍历,php循环输出数组,PHP数组循环遍历的四种方式 [(重点)数组循环遍历的四种方式] 1,https://www.cnblogs.com/waj6511988/p/6927208.ht ...

  3. 找出元素在数组中的位置

    网上很常见的一个题目: 题目描述:找出元素 item 在给定数组 arr 中的位置. 输出描述:如果数组中存在item,则返回元素在数组中的位置,否则返回-1. 示例:输入{1,2,3,4},3 结果 ...

  4. js的tree数组对象扁平化思否_JS专题之数组展开

    前言 首先什么是数组展开? 假如现在有这样一个需求:将后台的一个多重 List 数据,展开成一个 List 后,并去重后排序: ["a", "b", [&quo ...

  5. 算法 - 数组循环左移m个元素

    题目 整数数组,n个元素 数组循环左移m个元素 [1,2,3,4,5,6,7,8,9] -> [4,5,6,7,8,9,1,2,3] 思路 数组整体逆转 [1,2,3,4,5,6,7,8,9] ...

  6. c语言学习-自定义函数并调用将一个字符串中的小写字母改为大写字母(数组元素和数组名作函数参数)

    c语言自定义函数并调用将一个字符串中的小写字母改为大写字母(数组元素和数组名作函数参数) 程序流程图: 代码: #include<stdio.h> char strupr(char ch[ ...

  7. c语言将数组元素循环右移k位,把一个含有N个元素的数组循环右移K位

    普通解法: 可以每次将数组中的元素右移一位,循环K次.每个元素右移N位后都会回到自己的位置上.因此,如果K > N,右移K-N之后的数组序列跟右移K位的结果是一样的.进而可得出一条通用的规律:右 ...

  8. 长度为n的整数数组循环左移右移m位

    长度为n的整数数组循环左移m位 右移m相当于左移n-m // pat.cpp : Defines the entry point for the console application. //#inc ...

  9. 编程将一个二维数组元素变换为逆向存放,即按元素在内存中的物理排列位置,第一个元素变成倒数第一个元素,第二个元素变成倒数第二个元素,依此类推。

    编程将一个二维数组元素变换为逆向存放,即按元素在内存中的物理排列位置,第一个元素变成倒数第一个元素,第二个元素变成倒数第二个元素,依此类推.     例如,原始二维数组为,逆向存放后变为.试建立一个类 ...

最新文章

  1. memcache缓存服务器(nginx php memcache mysql)
  2. 企业网络推广专员浅析有利于企业网络推广的页面制作技巧有哪些?
  3. 用 FastJSON 将 JSON 字符串转换为 Map
  4. 从无到有整合SpringMVC-MyBatis项目(1):搭建JavaWeb项目
  5. Windows下SVN已检出项目自动更新
  6. 解析JDK 7的Garbage-First收集器
  7. weixin-java-tools工具-微信开发常见问题
  8. C++:Timer类实现
  9. js 小写金额转大写
  10. 找工作就来程序c#/.net开发求职招聘QQ群
  11. PO模式项目实战思路分析
  12. css小tips -- figcaption标签
  13. 技术总监经验总结: 从需求到上线之用户故事地图
  14. 【共阳极高辉度无频闪调光IC方案FP7125】耐压100V10A LED降压恒流PWM调光芯片 汽车大灯车灯照明/调光电源应用
  15. 9700 功耗测试软件,基准性能测试 - 酷睿i9-9900K/i7-9700K同步评测:八核的时代来了 - 超能网...
  16. CS61A Lab 4
  17. 结电场已经是光入射之前内部各种因素平衡所致的。凭什么说光生载流子是结电场推过去的?好像光生载流子只受结电场作用似的。提出动能假设 ?网友的相同疑问
  18. java 简单万年历_Java_万年历(简单)
  19. 联发科MT7682芯片资料MT7682处理器资料整理
  20. 782 变为棋盘——Leetcode天天刷(2022.8.23)【数学:降维计算】

热门文章

  1. Oracle----Orcacle简介
  2. JS的正则表达式 (转载) 真好 学习下
  3. 第五周 思维导图与快速学习
  4. 用vs20008生成MFC项目,测试wince
  5. alias linux 执行命令,Linux系统alias命令编写实现命令别名方法介绍
  6. 【浏览器兼容】火狐浏览器滚动条不出现问题
  7. Java之环境变量配置
  8. 【深解读】什么是数据科学?如何把数据变成产品?
  9. vue组件中的data为什么是一个函数
  10. 电商的1000+篇文章总结