gpt4 book ai didi

ruby - 我的选择排序算法有什么问题?

转载 作者:数据小太阳 更新时间:2023-10-29 07:52:05 25 4
gpt4 key购买 nike

对于受过训练的眼睛来说,答案可能是显而易见的,但我现在已经看了几个小时的书,我的眼睛很疲劳,而且我似乎看不到错误。

下面是我写的两个选择排序的实现,都没有正确排序输入。你可以play with this code在在线口译员上。

def selection_sort_enum(array)
n = array.length - 1

0.upto(n - 1) do |i|
smallest = i

(i + 1).upto(n) do |j|
smallest = j if array[j] < array[i]
end

array[i], array[smallest] = array[smallest], array[i] if i != smallest
end
end

def selection_sort_loop(array)
n = array.length - 1
i = 0
while i <= n - 1
smallest = i
j = i + 1
while j <= n
smallest = j if array[j] < array[i]
j += 1
end
array[i], array[smallest] = array[smallest], array[i] if i != smallest
i += 1
end
end

这是第一个实现的测试,selection_sort_enum:

puts "Using enum:"
a1 = [*1..10].shuffle
puts "Before sort: #{a1.inspect}"
selection_sort_enum(a1)
puts "After sort: #{a1.inspect}"

下面是第二个实现的测试,selection_sort_loop:

puts "Using while:"
a2 = [*1..10].shuffle
puts "Before sort: #{a2.inspect}"
selection_sort_enum(a2)
puts "After sort: #{a2.inspect}"

这是第一个实现的输出,selection_sort_enum:

Using enum:
Before sort: [7, 5, 2, 10, 6, 1, 3, 4, 8, 9]
After sort: [4, 3, 1, 9, 5, 2, 6, 7, 8, 10]

这是第二个实现的输出,selection_sort_loop:

Using while:
Before sort: [1, 10, 5, 3, 7, 4, 8, 9, 6, 2]
After sort: [1, 2, 4, 3, 6, 5, 7, 8, 9, 10]

最佳答案

在这两个代码片段中,您都在与索引i 而不是索引smallest 进行比较。

这应该有效:

def selection_sort_enum(array)
n = array.length - 1

0.upto(n - 1) do |i|
smallest = i

(i + 1).upto(n) do |j|
smallest = j if array[j] < array[smallest]
end
array[i], array[smallest] = array[smallest], array[i] if i != smallest
end
end

def selection_sort_loop(array)
n = array.length - 1
i = 0
while i <= n - 1
smallest = i
j = i + 1
while j <= n
smallest = j if array[j] < array[smallest]
j += 1
end
array[i], array[smallest] = array[smallest], array[i] if i != smallest
i += 1
end
end

输出:

Using enum:
Before sort: [5, 6, 7, 9, 2, 4, 8, 1, 10, 3]
After sort: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Using while:
Before sort: [6, 5, 9, 2, 1, 3, 10, 4, 7, 8]
After sort: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

解决方案链接:http://ideone.com/pKLriY

关于ruby - 我的选择排序算法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36508975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com