Java快速排序问题,谁能帮我看看下面的程序为什么出错了!刚学习,不大懂!

classQuickSort2{publicvoidQuickSort(intleft,intright,intarr[]){intl=left;intr=right;i... class QuickSort2
{
public void QuickSort(int left,int right,int arr[])
{
int l=left;
int r=right;
int pivotKey=arr[l];
//int temp;
if(l<r)
{
while(l<r)
{
while(l<r && arr[r]>=pivotKey) r--;
if(l<r)
{
arr[l]=arr[r];
}
while(l<r && arr[l]<=pivotKey) l++;
if(l<r)
{
arr[r]=arr[l];
}
arr[l]=pivotKey;
QuickSort(0,l-1,arr);
QuickSort(l+1,arr.length-1,arr);
}

}
}
}
展开
 我来答
陈学阳
2010-10-13 · TA获得超过2.8万个赞
知道大有可为答主
回答量:2.1万
采纳率:14%
帮助的人:5442万
展开全部
帮你改了一下:
public class Point{
public static void main(String[] args) {
int[] a = ;
quickSort(a, 0, a.length - 1);

for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + ",");
}
}
static int Partition(int[] a, int left, int right)
{
int tmp;

//进行一趟快速排序,返回中心记录位置
int pivot = a[left];//把中心置于a[0]
while (left < right)
{
while(left<right && a[right]>=pivot)
right--;
//将比中心记录小的移到低端
tmp = a[right];
a[right] = a[left];
a[left] = tmp;
while(left<right && a[left]<=pivot)
left++;
tmp = a[right];
a[right] = a[left];
a[left] = tmp;
//将比中心记录大的移到高端
}
a[left] = pivot; //中心移到正确位置
return left; //返回中心位置
}

public static void quickSort(int[] a, int left, int right) {
if(left >= right - 1)
return;

int pivot = Partition(a,left,right);
quickSort(a, left, pivot-1);
quickSort(a, pivot+1, right);
}
}

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!

vaela
ryon_jie
2010-10-12 · TA获得超过304个赞
知道小有建树答主
回答量:352
采纳率:0%
帮助的人:344万
展开全部
public class QuickSort {
public void sort(int arr[], int left,int right) {
int l, r;
int pivotKey, temp;
l = left;
r = right;
pivotKey = arr[left];
while (true) {
while ((++l) < right - 1 && arr[l] < pivotKey)
;
while ((--r) > left && arr[r] > pivotKey)
;
if (l >= r)
break;
temp = arr[l];
arr[l] = arr[r];
arr[r] = temp;
}

arr[left] = arr[r];
arr[r] = pivotKey;

if (left < r)
sort(arr, left, r);

if (right > l)
sort(arr, l, right);
}

// public static void main(String[] args) {
// QuickSort sort = new QuickSort();
// int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// sort.sort(arr, 0, 8);
// for (int i = 0; i < 9; i++) {
// System.out.println(arr[i]);
// }
// }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式