日期:2014-05-19  浏览次数:20715 次

这段代码哪儿有问题,求解释。
package itheima;

public class TEST1 {
//该方法是实现快速排序
//方法实现的结果为从小到大排序

// void swap(int a,int b)
// {
// a=a+b;
// b=a-b;
// a=a-b;
// }

int sortMethod(int[] arr,int i,int j){
//arr表示需要排序的数组,i和j分别表示排序的初始位置和结束位置
if(i==j){
//如果i和j已经相等,那说明需要排序的序列中只有一个数字,表示排序结束
return 0;
}
//当i和j不相等的时候,则进行排序,
int temp=arr[i];

//选择第一个数字作为排序的参考数据,然后从j位置开始逐一往前进行比较,当
//arr[j]小于temp的时候,就将arr[j]和arr[i]进行更换
//如果arr[j]大于temp,则将比较位置前移,也就是将j进行减1操作
//当j=i的时候,则停止排序


while(j>i){
//当arr[j]小于temp的时候,将arr[i]和arr[j]交换
while(arr[j]>temp)
j--;

arr[i]=arr[i]+arr[j];
arr[j]=arr[i]-arr[j];
arr[i]=arr[i]-arr[j];

while(arr[i]<temp)
i++;

arr[i]=arr[i]+arr[j];
arr[j]=arr[i]-arr[j];
arr[i]=arr[i]-arr[j];


}
return i;

}

void quicksort(int[] array,int low,int high){
// int high=array.length;
// int low=0;
while(low<high){
//对整个数列进行排序
int mid=sortMethod(array, low, high);
//对从 0到low进行排序
quicksort(array,low,mid-1);
//对low到high进行排序
quicksort(array, mid+1, high);
}

}




public static void main(String[] args){
TEST1 t=new TEST1();
int[] arr={22,33,21,423,11,121,1};
int i=0;

System.out.println("未排序前的序列");
for(;i<arr.length;i++)
System.out.print(arr[i]+",");
System.out.println('\n');

i=0;

t.quicksort(arr, 0, arr.length-1);
System.out.println("排序后的序列");
for(;i<arr.length;i++)
System.out.print(arr[i]+",");

}


}

------解决方案--------------------
引用:
引用:你使用的是引用传递,无法改变该数组
将数组定位为全局数组吧

还有一种就是返回这个数组