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很不熟悉,希望高手不吝赐教!

解决方案 »

  1.   

    程序会顺序执行的,两个if没有关系,第一个if执行完后会执行第二个。
      

  2.   

    还有那2个while,第一个while不成立的话,就不运行quicksort了吧?第二个while不运行是不是他下面{}里的不运行,if(i>=j)还是要运行的吧?
      

  3.   

    第二个while不成立的话,写错了
      

  4.   

    2个都需要运行,具体你使用调试看比较好...
        大致是,你在main函数内调用了quickSort函数,,
    数组第一个数字(第二个参数)与最后一个数字(第三个参数)..另外我觉得你这种排序很不好,, 具体请看http://yangl.iteye.com/blog/264627
      

  5.   

    哎 代码害人啊你把它写成if (xxx) {
    quickSort(xx)
    }if (xxx) {
    quickSort(xxx)
    }是不是清楚点??