`
Enria
  • 浏览: 11766 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

数组循环移位

 
阅读更多

 

public class ArrayCyclicShift {

	/**
	 * 设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量
	 * 假设把abcd1234循环右移4位
	 */
	public static void main(String[] args) {
		
		char[] A = {'a','b','c','d','1','2','3','4'};
		System.out.println("The Original Array is : " );
		Print(A);
		arrayCyclicShift(A,A.length,4);
		System.out.println("The Array After Shift is : ");
		Print(A);

	}

	public static void arrayCyclicShift(char[] A, int N, int K){
		Reverse(A,0,N-K-1);
		Reverse(A,N-K,N-1);
		Reverse(A,0,N-1);
	}
	
	public static void Reverse(char[] A, int start, int end){
		for(;start<end;start++,end--){
			char temp = A[start];
			A[start] = A[end];
			A[end] = temp;
		}
	}
	
	public static void Print(char[] A){
		for(int i=0;i<A.length;i++)
			System.out.print(A[i]);
		System.out.println();
		
	}
}
 

 

0
0
分享到:
评论
1 楼 CUStudent 2012-04-01  
注意K可能大于N,所以,你需要mod一下N,即K=K%N。这样就完全对了!:)

相关推荐

    数组循环移位问题的解法的探究

    ### 数组循环移位问题的解法探究 在计算机科学领域,数组作为一种基本的数据结构,在很多算法和数据处理中扮演着重要角色。特别是在涉及到数组元素的移动时,如何高效地进行数组元素的移位操作成为了许多算法研究的...

    数组循环移位算法参考.pdf

    数组循环移位算法是一种常见的数据操作,特别是在编程竞赛和算法设计中。该算法的主要目标是在一个包含N个元素的数组中,将所有元素向右移动K位,同时保持时间复杂度为O(N),并限制使用有限的额外空间。在本文中,...

    数组循环移位操作实例

    题: 如标题,要求时间复杂度为O(N)。解法:右移k位,前k位逆序,后N-k位逆序,再整个逆序即可。 代码如下:#include  #include  void reverse(int* array, int b, int e) { int temp = 0; for(;...

    自制数据存储_数据存储;for循环;移位寄存器的使用;_

    在for循环中,移位寄存器可以用于生成特定模式的序列,如斐波那契序列或循环移位。在描述中提到“输出图表”,这可能意味着使用移位寄存器生成的数据来绘制统计图形,例如使用Matplotlib库在Python中绘制条形图、...

    数组循环左移

    数组循环左移,也称为数组的旋转操作,是编程中常见的一种数据处理方式。它涉及到在有限的一维数组或向量中,通过指定步长(i)将元素整体向某个方向移动,通常包括向左移位和向右移位。在本例中,我们讨论的是向左...

    基于S7-1200 PLC实现数组某一列上下循环移动的方法研究.pdf

    本研究探讨了如何利用S7-1200 PLC实现数组某一列上下循环移动的控制方法,分别采用梯形图和结构化控制语言两种编程语言来编写程序,并对这两种方法的编程思路和程序解释进行了介绍。 在工业自动控制系统中,数据...

    C语言实现数组的循环移位的方法示例

    在C语言中,数组的循环移位是一种常见的操作,它涉及到数组元素的重新排列,使得数组元素按照指定的位数向左或向右移动。这种操作在数据处理、位操作和算法实现等领域都有广泛应用。本篇文章将深入探讨如何用C语言...

    给出数组和移位位数实现循环左移

    本篇文章将深入解析“给出数组和移位位数实现循环左移”这一主题,探讨其背后的逻辑、实现方法以及应用场景。 ### 循环左移的概念 循环左移是一种常见的位操作,它将数组或序列中的元素按照指定的位数向左移动,并...

    C语言数组元素的循环移位方法

    在C语言中,数组元素的循环移位是一种常见的操作,特别是在处理序列数据或者需要实现某种数据变换时。这种操作会将数组中的元素按照一定规则移动,例如,将数组的最末尾元素移动到最前端,其余元素依次后移。本文将...

    数组练习题Subject:数组

    数组循环移位是数组操作的一种常见需求。在 Subject06 中,我们需要将一个数组中前 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数。这可以通过使用 Java 中的数组索引和赋值操作来...

    三维数组元素上下移位_三维数组移位操作_

    本主题将深入探讨“三维数组元素上下移位”的概念,这是LabVIEW中对三维数组进行操作的一种常见技巧,特别是在处理多维数据时非常有用。 三维数组可以理解为由多个二维数组组成的集合,每个二维数组称为一个切片。...

    LabVIEW控制Arduino流水灯

    LabVIEW程序首先通过设置的串口号与Arduino Uno控制板建立连接,接着将通过For循环将数字管脚D2~D7设置为输出模式,然后进入While循环结构,在While循环中通过一维数组循环移位、移位寄存器和Digital Write Port...

    基于LabVIEW的广告LED灯设计.doc

    设计思路是基于LED的一维跑马灯原理,通过数组循环移位控制方法实现文本在LED屏上的动态显示。首先,将需要显示的文本通过“获取文本矩形区域”函数和“矩形中绘制文本”函数转化为图像,接着利用“图片至像素图”和...

    C#循环移位(不好,不要介意哦)

    在C#编程中,"循环移位"是一种常见的操作,特别是在处理数组或列表时,它涉及到元素的重新排列。在给定的标题和描述中,我们可以看到一个具体的例子,它展示了如何将一个数字序列(1到6)进行循环右移。这种操作在...

    循环数组移位实现三种数据类型的应用.vi

    循环移位数组实现三种数据类型的应用,通常对一个组进行循环移位,看似简单,实际上应用时发现比较麻烦,本案例通过一个的巧妙的方法,轻松解决了这个问题,尤其是用它来实现流水灯的变化非常方便,

    S7-200SMART通过循环移位实现MODBUS轮询源程序.zip

    标题中的"S7-200SMART通过循环移位实现MODBUS轮询源程序"涉及到的是在西门子S7-200SMART系列PLC中,利用编程技术进行MODBUS通信的一种具体应用。这里的核心是MODBUS轮询,它是MODBUS通信协议中的一种常见操作模式,...

    C语言的循环移位操作

    ### C语言中的循环移位操作 在计算机科学与编程领域,循环移位(或称为循环移位、循环移位)是一种常见的数据处理方法,尤其是在低级编程和算法优化中经常用到。本篇文章将深入探讨如何在C语言中实现循环左移和循环...

    关于数组的几道面试题1

    13. **数组循环移位**: 可以使用异或操作快速实现数组的循环移位。 14. **字符串逆序**: 字符串的逆序可以转化为数组的逆序操作,然后逐个字符复制。 15. **组合问题**: 例如组合总数、组合数的计算等,可以...

Global site tag (gtag.js) - Google Analytics