作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试解决一个名为 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/
我正在尝试解决一个名为 five_sort 的问题,该问题接受一个整数数组作为参数,并将所有的五放在数组的末尾,并让所有其他数字保持未排序状态。例如,[1,2,5,3,2,5,5,7] 将被排序为 [
我是一名优秀的程序员,十分优秀!