Je fais un tri simple en ruby mais je trierai par ordre décroissant. Cela me déroute parce que cela fonctionne pour toutes mes données sauf pour un seul numéro.Sélection Sorte de confusion
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
données non triées:
-> 26.71% 0.17% 0.65% 0.36% 0.17% 2.79% 0.04% 18.03% 0.13% 25.7% 25.18% 0.36%
: Itérations
-> 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% se sautée ici:
-> 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%
Je ne peux pas comprendre pourquoi 2,79% est compté comme> 18.03%
Toute aide serait formidable, merci!
soupir ... merci. –