首页 > 试题广场 >

请设计一C语言函数(注:只须写出函数,不必写出完整程序),该

[问答题]

请设计一C语言函数(注:只须写出函数,不必写出完整程序),该函数的功能是用尽可能高的时间效率与空间效率将一个int类型的数组A[0..n-1]的所有元素依次循环右移k个位置。

例如,对于某数组,当k=3时(即把数组所有元素循环右移3个位置),是将

10

20

30

40

50

60

70

转换为

50

60

70

10

20

30

40

void Reverse(int *arr,int p,int q){
	
	for(; p < q; p++,q--){
		int temp = arr[p];
		arr[p] = arr[q];
		arr[q] = temp;
	}
}

void RightMove(int *arr,int n,int k){
	
	Reverse(arr, 0, n - 1);
	Reverse(arr, 0, k - 1);
	Reverse(arr, k, n - 1);
}

发表于 2020-06-08 11:58:41 回复(0)
void fun (int  *w,int  m)
{
  int i,j;
  int x;
  for(i=1;i<=m;i++){
	x=w[n-1];			//放在最后位置 
	for(j=n-1;j>=0;j--){
		w[j]=w[j-1];
	}
	w[0]=x;
  }
}

发表于 2021-10-09 17:51:27 回复(0)
void Reverse(int *array, int p, int q);
{
    for (; p < q;p++,q--)
    {
        int temp = array[p];
        array[p] = array[q];
        array[p] = temp;
    }
}

void RightShift(int *array,int n,int k)
{
    k %= n;
    Reverse(array,0,n-k-1);
    Reverse(array,n-k,n-1);
    Reverse(array,0,n-1);
}

编辑于 2018-12-03 15:21:07 回复(1)