一段代码 帮忙看以下 急用!
有关排序的,String[] pData 这个什么用啊?
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);
}
------解决方案--------------------/*
* 快速排序算法
*
* @param pData :要排序的数组
* @param pDataNum :要排序的数组
* @param left :要排序数组的开始左下标
* @param right :要排序数组的开始右下标
*
* @return null
*
* @throws Exception null
*/
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{
//取左边的第i(且不是最后一个)个元素与中间元素比较,即取值大于中间值的左下标(交换)
while((pData[i].compareTo(middle) < 0) && (i < right))
i++;
//取右边的第J(且不是第一个)个元素与中间元素比较,即取值小于中间值的右下标(交换)
while((pData[j].compareTo(middle)) > 0 && (j > left))
j--;
//当做下标小于右下标时,表示两个数据需要交换
if(i <= j) {
//下标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);
}