所以我在R中做了一個蒙特卡洛快速排序算法,它使用函數來確定每次迭代中新的關鍵點的位置。 我的快速排序函數如下所示:arr=sample(1:30, size=5)
這是我的函數調用的樣子,用的印刷一起:R中意外的快速排序行爲
quickSort=function(arr, left, right) {
i = left
j = right
pivot = arr[sample(left:right, size=1)]
while (i <= j) {
while (arr[i] < pivot)
i=i+1
while (arr[j] > pivot)
j=j-1
if (i <= j) {
tmp = arr[i]
arr[i] <<- arr[j]
arr[j] <<- tmp
i=i+1
j=j-1
}
}
if (left < j)
quickSort(arr, left, j)
if(i < right)
quickSort(arr, i, right)
}
出於測試目的,我在劇本的每一個執行初始化一些隨機值向量向量:
quickSort(arr, 1, 5)
print(arr)
我在Visual Studio中測試了算法(當然是用C++寫的),每次都得到預期的結果。我在R猜測我在全局修改矢量時做錯了什麼,但我無法弄清楚。我希望你有任何想法。