气泡排序逻辑已损坏

时间:2019-10-10 20:22:34

标签: ruby

每次我学习一种新语言时,我都会尝试在其中建立气泡式排序。我这样做是因为它使用了大部分的通用迭代,以便以后可以参考。

现在,以我在(C,Python,VB)中尝试过的所有其他语言,(最多)这是一个20分钟的任务……(在C栏,我遇到了内存分配问题)。

但是在Ruby中……我无法使它正常工作。我遵循了我一直使用的完全相同的公式。事不宜迟:

#!/usr/bin/ruby

unsorted = []
swapFlag = 0
count    = 1   # 1 == TRUE, 0 == FALSE
temp     = 0

# Fills array with random numbers
while count != 20
  count += 1
  unsorted[count]=rand(100)
end

# Prints unsorted numbers, for comparison
while count != 0
  print "#{count} #{unsorted[count]} \n"
  count -= 1 
end

print "\n"

limit = unsorted.length


# This section is the problem.
# I'm assuming it's got something to do with the logic of the loop

while swapFlag == 1
  swapFlag = 0
  for count in 1..limit 
    if unsorted[count] > unsorted[count + 1]
      temp = unsorted[count + 1]
      unsorted[count + 1] = unsorted[count]
      unsorted[count] = temp
      swapFlag = 1
    end
  end     
end

count = 0
while count != 20 
  count += 1
  print "#{count} - #{unsorted[count]} \n"
end

我尝试使用不同的if循环语法,使用.each do方法...无济于事。

2 个答案:

答案 0 :(得分:1)

您似乎甚至都没有进入while循环:

swapFlag = 0
...
while swapFlag == 1

此外,此代码在修复时可能会起作用,但它不像Ruby。这种学习方法可能适合理解语法和一些基本的迭代,但是这种语言提供了更多的功能,可读性和强大的方法来实现这一目的。

答案 1 :(得分:0)

swapflag从未设置为1

name_avg_vector.tolist()