Methods 分割法
我正试图确切地理解这个方法的作用,它说它是假设的 “继续交换最外层位置错误的对”。我把这个放进了一个程序 尝试了不同的数组,但结果对我来说毫无意义,这到底是做什么的Methods 分割法,methods,data-partitioning,Methods,Data Partitioning,我正试图确切地理解这个方法的作用,它说它是假设的 “继续交换最外层位置错误的对”。我把这个放进了一个程序 尝试了不同的数组,但结果对我来说毫无意义,这到底是做什么的 partition(A, p) A: array of size n, p: integer s.t. 0 <= p < n 1. swap(A[0],A[p]) 2. i <- 1, j <- n − 1 3. while i < j do 4. while A[i] <
partition(A, p)
A: array of size n, p: integer s.t. 0 <= p < n
1. swap(A[0],A[p])
2. i <- 1, j <- n − 1
3. while i < j do
4. while A[i] <= A[0] and i < n do
5. i <- i + 1
6. while A[j] > A[0] and j > 0 do
7. j <- j − 1
8. if i < j then
9. swap(A[i], A[j])
10. swap(A[0], A[j])
11. return j
分区(A,p)
A:大小为n的数组,p:整数s.t.0此伪代码实现的算法是的分区阶段。它将排列数组,以便所有小于或等于
A[p]
的值位于左侧,所有较大的值位于右侧。它返回索引j
,这是左侧的最后一个索引,A[j]
等于A[p]
如果您不熟悉快速排序,那么我们的目的是使用此分区算法将数组拆分为“小”和“大”部分,并递归地对每个部分进行排序。由于数组中的小数组被安排在大数组之前,因此数组将被排序。如果正确选择
p
,使A[p]
接近A
中的中间值,这是一种非常快速的排序方法。首先,它不会编译。ShellScript初学者:你确定它是用Java编写的吗?它肯定不是Java代码。