日期:2014-05-20  浏览次数:20793 次

关于这个快速排序的代码,请高人们指教一下,怎么也不清楚是怎么回事
这个方法中的两个数组参数,一直没搞清楚为什么要用两个数组,谢谢达人们指教
void   QuickSort(String[]   pData,int[]   pDataNum,int   left,int   right)
            {  
                int   i,j;  
                int   iTemp;  
                String   middle,strTemp;
                i   =   left;  
                j   =   right;  
                middle   =   pData[(left+right)/2];  
                do{  
                    while((pData[i].compareTo(middle) <0)   &&   (i <right))  
                        i++;            
                    while((pData[j].compareTo(middle))> 0   &&   (j> left))  
                        j--;  
                    if(i <=j)  
                    {  
                        strTemp   =   pData[i];  
                        pData[i]   =   pData[j];  
                        pData[j]   =   strTemp;  
                       
                        iTemp   =   pDataNum[i];  
                        pDataNum[i]   =   pDataNum[j];  
                        pDataNum[j]   =   iTemp;  
                       
                        i++;  
                        j--;  
                    }  
                }while(i <=j);//如果两边扫描的下标交错,就停止(完成一次)  

                if(left <j)  
                    QuickSort(pData,pDataNum,left,j);  

                if(right> i)  
                    QuickSort(pData,pDataNum,i,right);  
            }  


------解决方案--------------------
根据pData的顺序调整pDataNum的顺序
------解决方案--------------------
关注