Java 快速排序帮助理解
Java Quicksort help understand
我正在尝试理解 java 中的快速排序算法。
我在下面评论了我想理解的部分旁边的问题。
public class Quciksort {
static void qsort( char items[]) {
qs(items,0,items.length-1); /*how can this method reference its parameters before the method is defined (below)?*/
}
private static void qs(char items[], int left, int right) //
{
int i, j;
char x, y;
i=left; j=right;
x=items[(left+right)/2];
do{
while((items[i] < x) && (i<right)) i++;
while((x < items[j]) && (j>left)) j--;
if(i<=j){
y=items[i];
items[i]=items[j];
items[j]=y;
i++;j--;
}
}while (i<=j);
if(left<j) qs(items, left, j);
if(i<right) qs(items, i, right);
}
}
您可能会将 Java 与 C 混淆,如果我在上次使用它 10 多年后还记得很清楚,那么声明一个方法 在调用它之前。
在Java中没有这个要求。因此,您可以调用稍后在代码中实现的方法。
关于参数,我不确定我是否正确地回答了你的问题,但在你的例子中,你调用 qs
数组 items
作为第一个参数(因为它被提供给qsort
方法),left
的值为 0,items
数组的长度为 -1,对于 right
.
我正在尝试理解 java 中的快速排序算法。
我在下面评论了我想理解的部分旁边的问题。
public class Quciksort {
static void qsort( char items[]) {
qs(items,0,items.length-1); /*how can this method reference its parameters before the method is defined (below)?*/
}
private static void qs(char items[], int left, int right) //
{
int i, j;
char x, y;
i=left; j=right;
x=items[(left+right)/2];
do{
while((items[i] < x) && (i<right)) i++;
while((x < items[j]) && (j>left)) j--;
if(i<=j){
y=items[i];
items[i]=items[j];
items[j]=y;
i++;j--;
}
}while (i<=j);
if(left<j) qs(items, left, j);
if(i<right) qs(items, i, right);
}
}
您可能会将 Java 与 C 混淆,如果我在上次使用它 10 多年后还记得很清楚,那么声明一个方法 在调用它之前。
在Java中没有这个要求。因此,您可以调用稍后在代码中实现的方法。
关于参数,我不确定我是否正确地回答了你的问题,但在你的例子中,你调用 qs
数组 items
作为第一个参数(因为它被提供给qsort
方法),left
的值为 0,items
数组的长度为 -1,对于 right
.