2017-05-13 5 views
0

버블 정렬 문제가 발생했습니다. 정확하게 3 개의 숫자를 정확하게 분류하기 때문에 작업에 매우 가깝게 보였다. 네 번째를 추가하면 다음과 같이 반환됩니다.배열 (루비)에 3 개 이상의 항목이있는 버블 정렬 오류

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

디버그 모드로 시도했지만 문제가있는 곳을 잘 모르겠습니다. 내가 사용하고있는 수업은 재귀를 아직 다루지 않았으므로이 문제없이이 문제를 해결할 수 있다고 가정합니다. 내가 delete_at을 추가 있도록

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는 항목을 삭제되지 않았습니다. 당신이 배열의 경계를 확인 did't 때문에

+0

왜 시간 n² 배열을 정렬됩니다했습니다 확인해야? 또한 Enumerable # sort와 bubble sort가 안정적이지 않으므로 루프 상태가 결코 false가 아닐 수도 있습니다. –

답변

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