ruby - 选择排序困惑

标签 ruby sorting

我正在用 ruby​​ 进行简单的选择排序,但我正在按降序排序。这让我感到困惑,因为这适用于我的所有数据,除了一个数字。

def parallel_sort(data, labels)
    raise "unequal array lengths" if  data.length != labels.length
    temp = File.open("temp.txt", "w")
    0.upto(data.length - 2) do |i|
        max = i # largest value
        (i+1).upto(data.length - 1) { |j| max = j if data[j] > data[max] } 
        data[i], data[max], labels[i], labels[max] = data[max], data[i], labels[max], labels[i] if i != max 

        temp.puts "->", data, "\n", labels, "\n"
    end

    return [data, labels]
end

未排序的数据:

-> 26.71% 0.17% 0.65% 0.36% 0.17% 2.79% 0.04% 18.03% 0.13% 25.7% 25.18% 0.36%

迭代:

-> 26.71% 25.7% 0.65% 0.36% 0.17% 2.79% 0.04% 18.03% 0.13% 0.17% 25.18% 0.36%

-> 26.71% 25.7% 25.18% 0.36% 0.17% 2.79% 0.04% 18.03% 0.13% 0.17% 0.65% 0.36%

18.03% 在这里被跳过:

-> 26.71% 25.7% 25.18% 2.79% 0.17% 0.36% 0.04% 18.03% 0.13% 0.17% 0.65% 0.36%

-> 26.71% 25.7% 25.18% 2.79% 18.03% 0.36% 0.04% 0.17% 0.13% 0.17% 0.65% 0.36%

-> 26.71% 25.7% 25.18% 2.79% 18.03% 0.65% 0.04% 0.17% 0.13% 0.17% 0.36% 0.36%

-> 26.71% 25.7% 25.18% 2.79% 18.03% 0.65% 0.36% 0.17% 0.13% 0.17% 0.04% 0.36%

-> 26.71% 25.7% 25.18% 2.79% 18.03% 0.65% 0.36% 0.36% 0.13% 0.17% 0.04% 0.17%

-> 26.71% 25.7% 25.18% 2.79% 18.03% 0.65% 0.36% 0.36% 0.17% 0.13% 0.04% 0.17%

-> 26.71% 25.7% 25.18% 2.79% 18.03% 0.65% 0.36% 0.36% 0.17% 0.17% 0.04% 0.13%`

-> 26.71% 25.7% 25.18% 2.79% 18.03% 0.65% 0.36% 0.36% 0.17% 0.17% 0.13%` 0.04%

我不明白为什么 2.79% 被算作 > 18.03%

任何帮助都会很棒,谢谢!

最佳答案

看起来你是按字母顺序排序的,所以我敢打赌你排序的数据是字符串,而你希望它们是 float 。

关于ruby - 选择排序困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6766344/

相关文章:

ruby-on-rails - 如何在 win 7 上安装 caldecott?

ruby-on-rails - Active Merchant 和 Authorize.net 在生产中返回失败

algorithm - 有效的函数排序

php - 在php中用特殊字符对数组进行排序

ruby-on-rails - God vs. Monit 用于过程监控

ruby - `Dir.entries` 中的排序顺序

Pandas GroupBy 和 sort_values 无法按预期工作

c++ - sort_heap 存在的原因

python - 沿 axis=1 对值进行排序,NaN 位于行开头

ruby - 为什么实例方法在include之后可以作为模块方法被调用?