2017-05-13 5 views
0

バブルソートの問題が発生しました。正しく3つの数字を並べ替えるので、実際には仕事に近いように思えました。私は第四を追加すると、それが返されます。配列(ルビー)で3つ以上のエントリを持つバブルソートエラー

in `>': comparison of Fixnum with nil failed (ArgumentError) 

を私がデバッグモードでそれを通過しようとしたが、私は、問題がどこにあるかわかりません。私が使っているレッスンは再帰をまだカバーしていないので、私はそれを使わずにこれを解決できるはずだと仮定しています。

def bubble(array) 
    x=0 
    while array!=array.sort 
     if array[x]>array[x+1] 
      nu=array.slice(x) 
      array.delete_at(x) 
      array<<nu 
     else 
     x+=1 
     end 
    end 
    puts "Sorted array: #{array}" 
end 

slice私はdelete_atを追加しましたので、エントリを削除されませんでした。あなたは、配列の境界をチェックdid'tので

+0

なぜあなたは回n²配列をソートしているが好きでも確認する必要がありますか?また、 'Enumerable#sort'もバブルソートも安定していないので、あなたのループ条件が決して偽でないことに注意してください。 –

答えて

0

、あなたは、配列の境界は

n = array.length 

# while loop 
# ... 
# a loop with array boundary 
    (n-1).times do |x| 
     # swap element in here 
    end 
#end while loop 
+0

チップをありがとう! – Clearfix99

関連する問題