我在获取正确的排序列表时遇到了问题。我不确定我做错了什么。
merge_sort = function(list)
{
#split list in half
#sort each half
#merge each half
if(length(list<2))
result = list
else
{
middle = ceiling(length(list)/2)
left = list[1:middle]
right = list[middle+1:length(list)]
merge_sort(left)
merge_sort(right)
while(min(length(left),length(right)) >0)
{
if(left[1] < right[1])
{
result = c(result,left[1])
if(min(length(left),length(right)) >= 2)
{
result = c(result,left[2:length(left)])
result = c(result, right[2:length(right)])
}
}
else
{
result = c(result,right[1])
if(min(length(left),length(right)) >= 2)
{
result = c(result,right[2:length(right)])
result = c(result, left[2:length(left)])
}
}
}
}
return(result)
print(result)
}发布于 2012-05-22 03:40:43
是不是应该用right = list[middle:length(list)]而不是right = list[middle+1:length(list)]。
https://stackoverflow.com/questions/10691384
复制相似问题