试设计一个算法,将数组A中的元素A[0]至A[n-1]循环右移k位,并要求只用一个元素大小的附加存储,元素移动或交换次数为O(n).
举一反三
- 设计一个算法,将含有n个元素的数组A的元素A[0..n-1]循环右移m位,要求算法的空间复杂度为O(1)。
- 设计一个时间复杂度为O(n)的算法,实现将数组A[n]中所有元素循环左移k个位置。
- 若二维数组a有5列,则元素a[2][3]在数组中位置为第________个。 (设a[0][0]为第一个元素)
- 有一严格升序的整型数组A,元素个数为n。现将其前k(0≤k≤n)个元素整体移动到数组后面,得到数组B,使B数组的前n-k个元素恰好是A数组的后n-k个元素,B数组的后k个元素恰好是A数组的前k个元素,且前后两部分的内部升序仍保持不变。请设计一个算法在B数组中查找某个给定元素value。算法设计在函数searchValue中,函数头可采用searchValue(int B[ ], int value)。那么你设计的高效算法的时间复杂度是 A: O(n) B: O(n^0.5) C: O(log n) D: O((log n)^2)
- 二维数组A[4][5]按行优先顺序存储,若每个元素占2个存储单元,且第一个元素A[0][0]的存储地址为1000,则数组元素A[3][2]的存储地址为( )。