我一直在尝试实现Hoare分区方法,但我和计算机似乎都不能理解它,因为它是在科尔曼和维基百科中编写的。这两个源代码中的算法看起来如下所示:
algorithm partition(A, lo, hi) is
pivot := A[lo]
i := lo - 1
j := hi + 1
loop forever
do
j := j - 1
while A[j] > pivot
do
i := i + 1
while A[i] < pivot
我的问题是一个大的数据框架,我想清除掉。对我来说,两个主要问题是:
整个数据框架是基于时间的。这意味着我不能左右移动行,否则,时间戳将不再适合。
数据并不总是按相同的顺序排列。
这里有一个例子来说明
index a b c d x1 x2 y1 y2 t
0 1 2 0.2
1 1 2 0.4
2 2 4 0.6
3 1 2 1.8
所以这个很难,因为它使用了递归,我不能再继续下去了。我不知道下一步该做什么。为了说明,merge_sort将数组划分为单个元素,然后我不知道下一步该做什么这真的很难我已经考虑了8个小时 def merge_sort ( array )
return if array.length < 2
a = merge_sort(array.slice!(0..array.length/2))
b = merge_sort(array)
end
def merge ( a , b )
merged = []
j_a = 0 # pointer to the firs