例項十三:左迴圈移位
方法:result=n<>(32-k)
(1) b:將n的左端的k位先放到b中的低位中。
b=n>>(32-k);
(2) c:將n左移k位,起右邊低位k位補0。
c=n<
(3)將b和c進行或操作.
解釋:原數 1011 1100
右移k位 0000 0010 ----將原數高位的10 移到最低位儲存 方法中的b
將原數左移k位 1111 0000 ----將未移動的位全部左移k位。 11 1100 全部左移 方法中的c
進行或操作 1111 0010
**:int _tmain(int argc, _tchar* ar**)
int n,k,b,c,nresult = 0;
cout << "請輸入原始的值:";
cin >> n;
cout << "請輸入左移的位:";
cin>>k;
b = n>>(32-k) ; // 將原始資料的高位移動到b的低位中
c=n<
nresult = b|c; //或運算,把從前的高位放到移動後的低位中
cout << endl <
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...