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

2013-01-24 03:38:38
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]+",");

}


}
...全文
76 3 点赞 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
rome_wu 2013-01-24
引用 2 楼 whz137458 的回复:
引用 1 楼 whz137458 的回复:你使用的是引用传递,无法改变该数组 将数组定位为全局数组吧
还有一种就是返回这个数组
  • 打赏
  • 举报
回复
rome_wu 2013-01-24
引用 1 楼 whz137458 的回复:
你使用的是引用传递,无法改变该数组
将数组定位为全局数组吧
  • 打赏
  • 举报
回复
rome_wu 2013-01-24
你使用的是引用传递,无法改变该数组
  • 打赏
  • 举报
回复
相关推荐
发帖
Java EE
加入

6.7w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2013-01-24 03:38
社区公告
暂无公告