public class QuickSort
{
public static int[] Data={4,6,2,9,5,1,7,3};                                                                                                                                                                                                                                                                          

     public static void main(String []args)
     {
          int i;
          int index;
          index=Data.length;
          
          System.out.print("Before Quick Sorting: ");
          for(i=0;i<index;i++)
          {
               System.out.print(" "+Data[i]+ " ");
          }
          System.out.println("");
          
          QuickSort(0,index-1,index);
          System.out.print("After Quick Sorting : ");
          for(i=0;i<index;i++)
          {
               System.out.print(" "+Data[i]+" ");
          }
          System.out.println("");
     }
    
     public static void QuickSort(int leftP,int rightP,int index)
     {
          int i,j,k;
          int pivot;
          int temp;
          
          i=leftP;                      //左指针
          j=rightP+1;                     //右指针
          
          pivot=Data[leftP];            //取最左边的元素
          
          if(i<j)
          {
               do
               {
                    do                  //从左往右找比pivot大的值
                    {
                         i++;
                    }while(Data[i]<=pivot && i<=rightP);
                    do                  //从右往左找比pivot小的值
                    {
                      j--;
                    }while(Data[j]>=pivot && j>leftP);
                    
                    if(i<j)                  //交换Data[i]和Data[j]
                    {
                         temp=Data[i];
                         Data[i]=Data[j];
                         Data[j]=temp;
                    }
                    if(i>j)
                    {
                         temp=Data[leftP];
                         Data[leftP]=Data[j];
                         Data[j]=temp;
                    }
               }while(i<j); 
               System.out.print("Current sorting result : ");
               for(k=0;k<index;k++)
               {
                    System.out.print(" "+Data[k]+" ");
               }
               System.out.println("");         
               QuickSort(leftP,j-1,index);           //排序左半边
               QuickSort(j+1,rightP,index);           //排序右半边
          }
     }
 
}Before Quick Sorting:  4  6  2  9  5  1  7  3
Current sorting result :  1  3  2  4  5  9  7  6
Current sorting result :  1  3  2  4  5  9  7  6
Current sorting result :  1  2  3  4  5  9  7  6
Current sorting result :  1  2  3  4  5  9  7  6
Current sorting result :  1  2  3  4  5  9  7  6
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
        at QuickSort.QuickSort(QuickSort.java:46)
        at QuickSort.QuickSort(QuickSort.java:72)
        at QuickSort.QuickSort(QuickSort.java:72)
        at QuickSort.main(QuickSort.java:19)
Press any key to continue...怎么右边没排?还抱错,我哪里写错了啊~~~~