3
所以我試圖用ML的參考類型實現bubblesort。我編譯了Poly/ML中的代碼,似乎「while(!flag)」循環只對任何輸入執行一次。這個Standard ML bubblesort的循環爲什麼只執行一次?
例如:[2,3,1]被「排序」爲[2,1,3],即第一個循環工作但第二個循環未運行。
「標誌」打印一次。
怎麼了?
謝謝。
fun bubbleSort l = (* l being a list of references *)
let
val it = ref 0 (* iterator variable *)
val len = length l
val flag = ref true (* to be set to true when a swap is made *)
in
while (!flag) do
(
flag := false;
while ((!it) < (len-1)) do
(
if (get l (!it)) > (get l ((!it)+1))
then (swap_next l (!it); flag := true; TextIO.print "Flag up\n")
else();
it := (!it) + 1
)
)
end;
我寫的模塊的完整代碼,如果需要,可以找到here。
驅動式註釋:53.33%(精確測量)你括號是多餘的。 –
謝謝!我知道他們中的一些人會是多餘的,但我正在準備考試,正確性比風格重要得多,所以我讓它滑動:) –