(1)演算法的基本設計思想
建立另外乙個陣列_r,將排序後的元素放在_r中,然後利用_r更新r。
時空複雜度都賊雞兒丟人。
(2)**如下
#include void main()
int _r[10];
for (count = 0; count <= 9; count++)
for (count = 0; count <= 9; count++)
}
(3)複雜度
時間複雜度o(n)
空間複雜度o(n)
(4)改進
設定_r的大小為p而不是n,僅儲存前p個元素,然後第p個之後的元素往前移,再把_r中的元素放在r之後。
時間複雜度o(n)
空間複雜度o(p)
(1)演算法的基本設計思想
設陣列元素逆置函式reverse(*r,a,b),r為想要逆置的陣列名稱,a為要逆置的第乙個元素,b為要逆置的最後乙個元素。
本質上是把r分為兩個陣列a和b,然後把ab變為ba。
演算法為先分別逆置a和b,得到a'和b',然後將逆置後的陣列a'b'整體再逆置。
效果如下:
以0123456789,p=5為例:
r=0123456789
a=01234
b=56789
a'=43210
b'=98765
a'b'=4321098765
r'=5678901234
(2)**如下
#include void reserve(int *r, int rstart, int rend);
void main()
reserve(r,0,p-1);
reserve(r, p, 9);
reserve(r, 0, 9);
for (count = 0; count <= 9; count++) }
void reserve(int *r, int rstart, int rend)//注意陣列作為引數傳入時的方式
}
(3)複雜度
時間複雜度o(n)
空間複雜度o(1)
資料結構 約瑟夫問題課後作業
1 2 課後作業 編號為1 n的n個人按順時針方向圍坐一圈,沒人持有乙個密碼 正整數,可以自由輸入 開始人 3選乙個正整數作為報數上限值m,從第乙個人安順十中方向自1開始順序報數,報到m時停止報數。報m的人出列 4,將他的密碼作為新的m值,從他順時鐘方向上的下乙個人開始從1報數,如此下去,直至所有人...
課後作業 情境三 程式結構與陣列 3 迴圈
1.使用for完成,一張紙的厚度大約是0.08mm,對折多少次之後能達到珠穆朗瑪峰的高度 8848.13公尺 2.使用while迴圈輸出以下結果 2 5 10 4 10 40 6 15 90 100 3.while迴圈和do while迴圈的區別是 a 沒有區別,這兩個結構任何情況下的效果都一樣 b...
資料結構之陣列元素的迴圈左移(c )
博主最近在學習資料結構,遇到一道很有意思的題目,拿來與諸位分享下。題目如下 請大家注意,迴圈位移的位數可能超過陣列中元素個數 輸入與輸出的資料均以空格分割,其中輸入的資料中第乙個是迴圈移位的位數,第二個是陣列中資料的個數,後面的是陣列中的資料。實現 如下 include include includ...