设计一个时间复杂度为O(n)的算法,实现将数组A[n]中所有元素循环左移k个位置。
举一反三
- 设计一个算法,将含有n个元素的数组A的元素A[0..n-1]循环右移m位,要求算法的空间复杂度为O(1)。
- 输出一个二维数组a[m][n]中各元素的时间复杂度为( )。 A: O(m) B: O(n) C: O(mn) D: O(m+n)
- 输出一个二维数组b[m][n]中所有元素值的时间复杂度为( )。 A: O(n) B: O(m+n) C: O(m) D: O(m*n)
- 从一维数组a[n]中顺序查找出一个最大值元素的时间复杂度为()。 A: O(1) B: O(n) C: D: O(n!)
- 设计一个时间复杂度为O(n)的算法,实现将数组a[n]中所有元素调整为左右两部分,左边为奇数,右边为偶数。将下面代码补充完整。 public static void Adjust(int a[],int n){ int i=0,j=n-1,temp; while(i<j){ while( 1 ) i++; while( 2 ) j--; if(i<j) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } }[/i][/i]