写了一个快速排序代码,一直角标越界,求大神指点

lc_23333 2017-09-25 04:04:31
package com.suanfa;
//角标越界
import java.util.Arrays;

public class kuai_pai2 {
public static void main(String[] args) {
int[] arr={10,6,1,2,7,9,3,4,1,0};

quickSort(arr,0,arr.length);
System.out.print(Arrays.toString(arr));
}
public static void quickSort(int[] date,int left,int right){
int i,j,t,temp;
temp=date[left];
i=left;
j=right;
if(left>right){
return;
}
while(date[j]>=temp && i<j){
right--;
}
while(date[i]<=temp && i<j){
left++;
}
if(i<j){
t=date[i];
date[i]=date[j];
date[j]=temp;
}//完成第一轮转换,即所有小于基数的数和所有大于基数的数相换
//将基数与i,j碰面的值交换,即基数归位
date[left]=date[i];
date[i]=temp;

quickSort(date,left,i-1);


quickSort(date,i, i+1);

}

}






...全文
204 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
逗比123号 2017-09-25
  • 打赏
  • 举报
回复

	public static void quickSort(int[] date,int left,int right){
		if(left>=right){
			return;
		}
		int i,j,t,temp;
		temp=date[left];
		i=left;
		j=right-1;
		while(true){
			while(j>0 && date[j]>=temp){
				j--;
			}
			while(i<j && date[i]<=temp){
				i++;
			}
			if(i<j){
				t=date[i];
				date[i]=date[j];
				date[j]=t;
			}else{
				break;
			}
		}
		date[left]=date[i];
		date[i]=temp;
		quickSort(date,left,i);
		quickSort(date,i+1, right);
		}

galiniur0u 2017-09-25
  • 打赏
  • 举报
回复
楼主最后一行quickSort(date,i, i+1);这个应该是quickSort(date,i+1, right);

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧