我是编程新手,我正在尝试学习算法并在R中实现它们。这是我尝试插入排序:
# insertion sort algorithm
inserionsort_function <- function(A){
for (j in 2:length(A)) {
key = A[j]
# insert A[j] into sorted sequence A[1,...,j-1]
i = j - 1
while (i > 0 & A[j] > key) {
A[(i + 1)] = A[i]
i = i - 1
}
A[(i + 1)] = key
}
}
inserionsort_function(c(5, 2, 4, 6, 1, 3))
我的代码运行没有任何错误,但我的函数输出不正确
答案 0 :(得分:1)
您的代码至少有4个问题,1个小问题和3个主要问题:
1)名称中有一个拼写错误,你可能意味着insertionsort_function
(这是不必要的冗长 - 为什么不只是insertionsort
?)
2)你没有返回任何东西。如果要返回原始数组的已排序副本,请将A
本身作为该函数的最后一行。 R返回函数定义中的最后一个表达式。
3)A[j] > key
应为A[i] > key
4)&
(用于向量)应替换为&&
(用于逻辑条件)。
进行这些更改会产生:
insertionsort_function <- function(A){
for (j in 2:length(A)) {
key = A[j]
# insert A[j] into sorted sequence A[1,...,j-1]
i = j - 1
while (i > 0 && A[i] > key) {
A[(i + 1)] = A[i]
i = i - 1
}
A[(i + 1)] = key
}
A
}
例如,
> insertionsort_function(c(5, 2, 4, 6, 1, 3))
[1] 1 2 3 4 5 6
我不相信R是学习编程绝对基础知识的好语言。如果你想在R中专门学习编程,我会推荐一本明确使用R来教授编程的书。例如,我发现这本书Hands-On Programming with R是一个很好的起点。这是一个快速阅读,讲授R语境中的编程基础。