所以我试图学习如何在不使用.sort方法的情况下对数组进行排序,这是我到目前为止所做的,但中间数字正在退出。
def my_sort(num)
for j in 1...num.length
key = num[j]
i = j - 1
while i > 0 and num[i] = key
num[i+1] = num[i]
i = i - 1
end
num[i+1] = key
end
end
然后我运行方法
my_sort([3,1,2])
我得到了
=> 1...3
但我想要
=> 1,2,3
我做错了什么?
答案 0 :(得分:2)
您没有返回修改后的数组,而是将对象反馈到for
迭代器中。
你遗漏的只是将数组作为方法中的最后一件事:
def my_sort(num)
# ...
num
end
作为一个说明,破坏你给出的论点通常是不好的形式。更礼貌的功能会返回一份副本。
答案 1 :(得分:0)
插入排序的实际实现必须如下所示:
def my_sort(arr)
for j in 1...arr.length
key = arr[j]
i = j-1
while i>=0 and arr[i] > key # You used arr[i] = key here instead
arr[i+1] = arr[i]
i = i-1
end
arr[i+1] = key
end
arr #return the array
end