陣列迴圈移位

2021-06-20 19:03:22 字數 713 閱讀 8122

#include

#include

using namespace std;

//method1

/*簡單的辦法,可以每次將陣列中的元素右移一位,迴圈k次。

不妨設k是乙個非負的整數,當k為負整數的時候,右移k位,相當於

左移(-k)位。左移和右移本質上是一樣的。大家開始可能會有這樣潛在的假設,k0;j--)

arr[0]=temp;

}return arr;

}//method2

/*abcd1234右移4位的變換過程可以通過以下步驟完成:

逆序排列abcd:abcd1234  ->  dcba1234

逆序排列1234:dcba1234  ->  dcba4321

全部逆序:    dcba4321  ->  1234abcd

時間複雜度為o(n)

*/void reverse(char* arr,int b,int e) //將arr[b,...,e]反轉

int main()

str[i]='\0';

string result=cyclemove(arr,len,k);//呼叫方法一

cout

for(i=0;icout

}system("pause");

return 0;

}

陣列迴圈移位

陣列迴圈移位 對於存有n個整數的陣列,將其向左迴圈移動k個位置,x0,x1,xn 1 變換為 xk,xk 1,xn 1,x0,x1,xk 1 最直接的方法就是每次將首位的數放到乙個臨時的整型變數中,後面n 1個數一次左移,這樣需要k次才能完成,而每次的複雜度是o n 因此總共其複雜度是o k n 一...

陣列迴圈移位

題目 設計乙個演算法,把乙個含有n個元素的陣列迴圈右移k位,要求複雜度為o n 且只允許使用兩個變數 思考問題 1 考慮原始解法 直接迴圈移動陣列k次,則演算法複雜度為0 n k 使用額外兩個變數完成,顯然複雜度依賴於k的值,如果k n,則演算法複雜度大於或等於o n 2 2 考慮改進 原始演算法複...

陣列迴圈移位

問題描述 n個元素儲存於陣列a 0.n 1 中,求向右或向左迴圈移位 k k 0 位得到的新陣列a。1.迴圈右移 步驟 1 k k n 2 把序列分成前 n k 個數和後k個數兩組分別進行逆轉操作,如下圖 如下 void rightshift char a,int n,int k 其中reverse...