数组左移 i 位 3 种方法

1.临时数组存储

  先将前 i 个元素用数组存起来

  再将后 n - i 个元素左移 i 位

  最后将存起来的数组添加到后面去即可

2.通过多次调用左移 1 位的函数

3.翻转

  将待移动的数组以 i 为分隔看成两段 AB

  先将 A 翻转,再将 B 翻转

  之后将数组整个翻转

 #include <stdio.h>
typedef int ElemType; void move1(ElemType a[], int n, int i) {
//将前 i 个元素存起来
ElemType b[i];
int j;
for(j = ; j < i; j++) {
b[j] = a[j];
}
//将后 n - i 个元素左移 i 位
int k;
k = ;
for(j = i; j < n; j++) {
a[k++] = a[j];
}
//将存起来的元素复制到其末尾
k = ;
for(j = n - i; j < n; j++) {
a[j] = b[k++];
}
} void move2(ElemType a[], int n, int i) {
while(i != ) {
int k;
int temp = a[];
for(k = ; k < n; k++) {
a[k - ] = a[k];
}
a[n - ] = temp;
i--;
}
} void reverse(ElemType a[], int low, int high) {
int temp;
while(low < high) {
temp = a[low];
a[low] = a[high];
a[high] = temp;
low++;
high--;
}
} void move3(ElemType a[], int n, int i) {
reverse(a, , i - );
reverse(a, i, n - );
reverse(a, , n - );
} void print(ElemType a[], int n) {
for(int i = ; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
} int main(int argc, char const *argv[]) {
ElemType a[] = {, , , , , , , , , };
move2(a, , );
print(a, );
return ;
}

数组循环左移 i 位的更多相关文章

  1. pta 习题集 5-15 数组循环左移

    本题要求实现一个对数组进行循环左移的简单函数:一个数组aa中存有nn(>0>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移mm(≥0≥0)个位置,即将aa中的数据由(a0a ...

  2. 剑指offer43:左旋转字符串(字符串):对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。

    1 题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”a ...

  3. C语言实现数组循环左移

    c语言实现数组左移: 例如输入: 8 3 1 2 3 4 5 6 7 8 输出: 4 5 6 7 8 1 2 3 #include <stdio.h> int main(int argc, ...

  4. 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!

    // test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...

  5. 把一个数组向右循环移动k位要求时间复杂度为O(n)

    今晚做了下某公司的网络笔试题,好久没刷题了,现在渣得要死,里面有道程序设计题是 把一个数组向右循环移动k位要求时间复杂度为O(n) 给的方法定义为 public void solution(int a ...

  6. 编写一函数用来实现左右循环移位。函数原型为move(value,n);n>0时右移n位,n<0时左移|n|位。

    #include<stdio.h> #include<stdlib.h> int main(){ setbuf(stdout,NULL); int move(int,int); ...

  7. 字符串循环右移N位

    给一个长度为n的字符串,把这个字符串循环右移N位(0<N<n),要求只用O(1)的额外空间和O(N)时间,有些什么方法 一开始想到的是先保存temp=s[0],在左起第N个移到s[0]的位 ...

  8. 循环(数组循环、获取json数据循环)、each()循环详解

    return; // 退出循环(不满足,退出此次循环.下次满足条件,依然会走此循环)return false; //退出函数(退出所有) 一. 数组循环: html: <div class=&q ...

  9. C语言系列之预处理指令、循环左移函数的使用(四)

    本章节将讲两个知识点 第一个知识点:常用的预处理指令 第二个知识点:循环左移右移函数 第一个知识点:预处理指令 一种预处理指令是#define,他把名字A定义为P0,当这个名字出现在源文件的任何地方时 ...

随机推荐

  1. phoneGap的Android下编写phonegap 插件

    一. javascript 端的编写  第一个参数 成功的回调函数 第二个参数 失败的回调函数 第三个参数 是插件的类名称,也就是后台java文件的类名 第四个参数 执行的 action 名称     ...

  2. 在Ubuntu搭建网站环境问题记录

    1. 安装apache2 遇到如下问题 root@louis:~# apt-get install apache2Reading package lists... DoneBuilding depen ...

  3. Core Animation Manages Your App’s Content

    Core Animation 是对现有图片的操作函数. https://developer.apple.com/library/content/documentation/Cocoa/Conceptu ...

  4. 【转】Android开发:shape和selector和layer-list的(详细说明)

    <shape>和<selector>在Android UI设计中经常用到.比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到<shape> ...

  5. centos 在安装YouCompleteMe时提示 Fatal : pyconfig.h No such file or directory

    问题:centos 在安装YouCompleteMe时提示 Fatal : pyconfig.h No such file or directory 解决:安装python-devel yum ins ...

  6. 理解JavaScript数据类型

    JavaScript有5种基本数据类型: 数值(number):整数和小数(比如1和3.14) 字符串(string):字符组成的文本(比如"Hello World") 布尔值(b ...

  7. sqlserver事务怎么开启 怎么提交 怎么回滚

    1.自动transaction每句statement都是一个transaction.例一个update指令更新多笔纪录, 要就全部成功, 只要失败,全部会回复原值. 2.ExplicitTransac ...

  8. .net MVC 页面页面跳转后提示消息实现办法

    mvc在RedirectToAction之后,会清理掉ViewData中的所有数据,因此通过ViewData给下一个页面传递提示消息不太好,如果是通过参数方式传递,刷新跳转后的页面时,消息还会再次提示 ...

  9. NodeJs——入门

    关于NPM: npm 是 nodejs 的包管理和分发工具.它可以让 javascript 开发者能够更加轻松的共享代码和共用代码片段,并且通过 npm 管理你分享的代码也很方便快捷和简单. 一 No ...

  10. Spring - 父容器与子容器

    一.Spring容器(父容器) 1.Mapper代理对象 2.Service对象 二.Springmvc(前端控制器)(子容器)        Controller对象 1.标准的配置是这样的:Con ...