目錄1 問題描述
2 解決方案
2.1位置置換演算法
2.2 走環演算法
有乙個長度為2n的陣列
,希望排序後變成
,請考慮有沒有時間複雜度為
o(n)
而空間複雜度為
o(1)
的解法。
下面演算法的時間複雜度為o(n),空間複雜度為
o(n)
。具體**如下:
packagecom.liuzhen.practice;
public
class
main
return
; }
public
static
void
main(string args) ;
test.getlocationreplace(a);
for(int i = 1;i < a.length;i++)
system.out.print(a[i]+" ");
}}
執行結果:
a1 b1 a2 b2 a3 b3 a4 b4 a5 b5
下面演算法的時間複雜度為o(n),空間複雜度為
o(1)
。具體**如下:
packagecom.liuzhen.practice;
public
class
main1
return
; }
public
void reverse(string a, int start, int
end)
return
; }
public
void rightrotate(string a, int start, int m, int
n)
public
void
perfectshuffle(string a)
//n == 1時
string temp = a[1 +start];
a[1 + start] = a[2 +start];
a[2 + start] =temp;
for(int i = 1;i < len;i = i + 2)
return
; }
public
static
void
main(string args) ;
test.perfectshuffle(a);
for(int i = 1;i < a.length;i++)
system.out.print(a[i]+" ");
}}
執行結果:
a1 b1 a2 b2 a3 b3 a4 b4 a5 b5
完美洗牌演算法
原文 完美洗牌問題 給定乙個陣列a1,a2,a3,an,b1,b2,b3.bn,把它最終設定為b1,a1,b2,a2,bn,an這樣的。分析 首先,有的問題要求把它換成a1,b1,a2,b2,an,bn。其實也差不多。我們可以 迴圈n次交換a1,b1,a2,b2,把陣列變為b1,b2.bn,a1,a...
完美洗牌演算法
沒把空間複雜度o 1 的搬過來 問題描述 有乙個長度為2n的陣列,希望排序後變成,請考慮有沒有時間複雜度為o n 而空間複雜度為o 1 的解法。string a string temp new string len for int i 1 i len i temp 2 i len a i 經過上面處...
完美洗牌演算法
完美洗牌就是將一副牌平均分成兩份 26張 來交錯洗牌,如此迴圈反覆一定次數後,又變回洗牌前的順序了。即 a 1,a 2.a n,b 1,b 2.b n的序列變為b 1,a 1,b 2,a 2.b n,a n 我知道這 很shi,只是拋磚,向各位高人請教更好的演算法,謝謝 完美洗牌就是將一副牌平均分成...