0
分配練習,我感到困惑:訂購使用二維動態數組
我們的n
整數隨機順序的數組和工作需要我們用下面規定的方法對它們進行排序。
首先我們把整數行以下兩條規則:
- 我們把整一個整數的頂部僅b如果< b
- 否則,我們將整數在一個新行
這2條規則用於對數組進行排序。當我們完成應用規則時,我們選擇一個較小的可見整數,一次一個,直到它們被排序。
的鍛鍊需要使用3個數組:
data[1...n]
包含數字進行排序column[1...n,1...]
number[1..n]
其表示整數的每一列上的總數
例如,如果
data = [3,2,12,8]
然後column
是:
column[1,1] = 3
column[2,1] = 2
column[1,2] = 12
column[2,2] = 8
而且number
將[2,2]
我試圖做一個循環(請記住,在英文的僞代碼可能是一個比我正在學習不同在我的自然語言)
for counter=1 to n
number[counter]:=0;
end for
for counter=1 to n
a := 1;
b := 1;
if data[counter] < column[a,number[b]] or number[b]=0 then
number[b] := number[b] + 1;
column[a,number[b]] := data[counter];
else
a:=a+1;
b:=b+1;
end if
end for
但是這個代碼有很多錯誤。有人可以試圖解釋我的邏輯錯在哪裏嗎?
另一個問題是,如果我能解決簡單的算法,我應該感到氣餒嗎?我應該放棄嗎?算法是否可以解決您可以學習的問題這是一個經驗問題嗎?如果我花了7-8個小時沒有成功,我是否應該嘗試明確思考的明天? – n17n
在試圖分析僞代碼之前,試着理解*爲什麼*算法具有它所做的步驟?用這種方式安排價值是什麼讓你做的? *爲什麼*它工作? – JaredC
我的問題是它不起作用。我再也不能想清楚爲什麼了。 – n17n