数据循环移位
来源:互联网 发布:软件测试工程师培训班 编辑:程序博客网 时间:2024/05/29 18:02
class Program { //比如一个数组 1 2 3 4 5 6 循环右移 2 位,将变成 5 6 1 2 3 4, 经过观察,可以看到1 2 3 4 部分的顺序在移位前后的相对位置并没有变化,只是5 6 放在了最前面。 //因此思路可为:1)先化分为两部分:1 2 3 4 | 5 6,然后将1 2 3 4逆序,再将5 6 逆序,得到5 6 1 2 3 4 public static void Main(string[] args) { int[] arr = { 1,2,3,4,5,6}; int n = 14; Remove(arr, n); foreach (int item in arr) { Console.Write(item); Console.Write(" "); } Console.ReadKey(); } /// <summary> /// 反转 /// </summary> /// <param name="arr">数据</param> /// <param name="start">起始下标</param> /// <param name="end">结束下标</param> private static void Revices(int[] arr,int start, int end) { int temp = 0; while (start<end) { temp = arr[start]; arr[start++] = arr[end]; arr[end--] = temp; } } /// <summary> /// 移位 /// </summary> /// <param name="arr">数组</param> /// <param name="n">要移动的位数</param> private static void Remove(int[] arr, int n) { //当移动的位置超过数据长度时 if (n > arr.Length) { n = n % arr.Length; } //k 数组的长度 int k = arr.Length; Revices(arr, 0, k - n - 1); Revices(arr, k - n, k - 1); Revices(arr, 0, k-1); } }
//第一次反转: 4 3 2 1 5 6
//第二次反转: 4 3 2 1 6 5
//第三次反转: 5 6 1 2 3 4
- 数据循环移位
- 数据循环移位(左右区间交换)
- 循环移位
- 循环移位
- 循环移位
- 循环移位
- 循环移位
- 循环移位
- 循环移位
- 循环移位
- 循环移位
- 移位和循环指令
- 循环移位的实现
- 数组循环移位算法
- 数组循环移位问题
- 数组循环移位
- 数组循环移位
- 数组循环移位
- Cow Patterns poj 3167 (hash解法)
- Sicily 1011. Lenny's Lucky Lotto
- 创建一个jQuery UI的垂直进度条效果
- 我的中科院之旅
- uva11991
- 数据循环移位
- C++解析得到的JSON数据
- 一个应届计算机毕业生的2012求职之路
- Android学习小应用案例---根据身高和性别计算标准体重
- postgreSQL在debian下安装、使用(SIL4—linux学习篇)
- 设计模式--学习笔记--代理模式Proxy--基础篇
- ftpClient 记录
- linux学习笔记
- 初创电商步步谈(一)- 前期准备的内容真不少