gpt4 book ai didi

Ruby 数组 five_sort 算法

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

我正在尝试解决一个名为 five_sort 的问题,该问题接受一个整数数组作为参数,并将所有的五放在数组的末尾,并让所有其他数字保持未排序状态。例如,[1,2,5,3,2,5,5,7] 将被排序为 [1,2,3,2,7,5,5,5 ]。问题的规则规定只能使用 while 循环,除了 [][]= 外,不能在数组上调用其他方法>。这是我当前的代码:

def five_sort(array)
sorted = false
while sorted == false
idx = 0

while idx < array.length
if array[idx] == 5
array[idx], array[idx + 1] = array[idx + 1], array[idx]
end
idx += 1
end
sorted = true
end
array
end

运行时,它只是在一个连续的循环中,但我找不到如何修复它。我知道,如果我只运行第二个 while 循环而不使用 while sorted 循环,则数组只会运行一次,而 fives 只会切换一次位置,循环就会结束。但是我不知道如何运行第二个 while 循环并在所有五个都结束后停止它。

谁能帮我解决这个问题?

最佳答案

只是一个简单的 O(n) 时间和 O(1) 空间解决方案,使用写索引和读索引。

  w = r = 0
while array[w]
r += 1 while array[r] == 5
array[w] = array[r] || 5
w += 1
r += 1
end

关于Ruby 数组 five_sort 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49135247/

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