import java.util.Arrays;public class QuickSort {
public static void quickSort(int[] pData,int left,int right)
{
int i ,j ;
int middle,temp ;
i = left ;
j = right ;
middle = pData[left] ;
while(true)
{
while((++i)<right && pData[i]<middle) ;
while((j)>left && pData[j]>middle)
{
j--;
};
if(i>=j)
break ;
temp = pData[i] ;
pData[i] = pData[j] ;
pData[j] = temp ;
}
pData[left] = pData[j] ;
pData[j] = middle ;
if(left<j)
quickSort(pData,left,j) ;
if(right>i)
quickSort(pData,i,right) ;
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
int[] pData = new int[]{49,38,65,97,76,13,27} ;
quickSort(pData,0,pData.length-1) ;
System.out.println(Arrays.toString(pData)) ;
}
}
我只知道这是一个排序的程序,但是我不清楚里面是怎么运行的,尤其是连续的2个if,如果条件满足的话运行哪一个?一个一个运行还是只运行其中一个,而且第一个if运行的时候,上面的pData[left] = pData[j] ;
pData[j] = middle ;
这2句还要不要运行了?
我是新手,对JAVA很不熟悉,希望高手不吝赐教!
public static void quickSort(int[] pData,int left,int right)
{
int i ,j ;
int middle,temp ;
i = left ;
j = right ;
middle = pData[left] ;
while(true)
{
while((++i)<right && pData[i]<middle) ;
while((j)>left && pData[j]>middle)
{
j--;
};
if(i>=j)
break ;
temp = pData[i] ;
pData[i] = pData[j] ;
pData[j] = temp ;
}
pData[left] = pData[j] ;
pData[j] = middle ;
if(left<j)
quickSort(pData,left,j) ;
if(right>i)
quickSort(pData,i,right) ;
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
int[] pData = new int[]{49,38,65,97,76,13,27} ;
quickSort(pData,0,pData.length-1) ;
System.out.println(Arrays.toString(pData)) ;
}
}
我只知道这是一个排序的程序,但是我不清楚里面是怎么运行的,尤其是连续的2个if,如果条件满足的话运行哪一个?一个一个运行还是只运行其中一个,而且第一个if运行的时候,上面的pData[left] = pData[j] ;
pData[j] = middle ;
这2句还要不要运行了?
我是新手,对JAVA很不熟悉,希望高手不吝赐教!
大致是,你在main函数内调用了quickSort函数,,
数组第一个数字(第二个参数)与最后一个数字(第三个参数)..另外我觉得你这种排序很不好,, 具体请看http://yangl.iteye.com/blog/264627
quickSort(xx)
}if (xxx) {
quickSort(xxx)
}是不是清楚点??