傳入乙個陣列如
將陣列前面 head的乙個子集移到陣列末尾end
如input numberofelements=3,則=>
input numberofelements=5,則=>
如何寫出該演算法?
方法一:用前部分逆置,後部分逆置,整個陣列逆置。
注意陣列名作形參的時候,會退化為指標,所以用sizeof(a)/sizeof(a[0])是求不出陣列長度的,
目前只知道直接傳入陣列長度的方法。
view code
1 #include第二種方法參考氣泡排序,用迴圈移位實現。。。2using
namespace std;34
void reverse(int array,int start,int end)
5
12 }
1314
void movesubarraytotheend(int array, int numberofelements,int length)
15
2021
22int main()
23 ;
26 movesubarraytotheend(b,6,sizeof(b)/sizeof(b[0])-1);
27for(int i=0; i<=6; i++)
28 cout
29 cout<7]<30
31 }
view code
1 #include2using
namespace std;34
void movesubarraytotheend(int array, int numberofelements,int length)
5 14 }
15 }
1617
int main()
18 ;
21 movesubarraytotheend(b,6,sizeof(b)/sizeof(b[0]));
2223
for(int i=0; i<=6; i++)
24 cout
25 cout<7]<26
return
0;27 }
陣列迴圈移位
陣列迴圈移位 對於存有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...