62,614
社区成员
发帖
与我相关
我的任务
分享
public static void main(String[] args) {
int[] dataList = { 5, 7, 100, -2, 0, 10, 121 };
Arrays.sort(dataList, 0, 6);
for (int i : dataList) {
System.out.println(i);
}
}
不清楚你为什么要自己写一套排序的算法。为了练手?可以的。不过,你可以先参考人家JDK给出的API,借鉴人家的经验。或者你的排序有什么特殊的要求?也需要自己来写。那么就先思考整个完整的排序算法,写在纸上,或者画出排序的流程图。然后再去编码。
at org.demo.QuickSort.partition(QuickSort.java:21)
at org.demo.QuickSort.quickSort(QuickSort.java:8)
at org.demo.QuickSort.main(QuickSort.java:49)
这三行出错,楼主可以自己检查代码,打断点来跟踪,慢慢就学会调试了。
int Vector[] = new int[dataList.length];
package com.wanmei.test;
public class QuickSort {
// private int dataList[] = {5,7,100,-2,0,10,121};
void quickSort(int dataList[], int left, int right) {
if (left < right) {
int pivotpos = partition(dataList, left, right);
quickSort(dataList, left, pivotpos - 1);
quickSort(dataList, pivotpos + 1, right);
}
//for (int i = 0; i <= dataList.length; i++) {//这里不能是 <= 会造成数组的越界,应该是 <
for (int i = 0; i < dataList.length; i++) {
System.out.println(dataList[i] + " ");
}
}
int partition(int dataList[], int low, int high) {
int pivotpos = low;
//int Vector[] = null;//你这里给int数组赋予的是空值,当然在后面的调用的时候会出错了。
int vector[] = new int[dataList.length];;
//for (int i = 0; i <= dataList.length; i++) {//这里不能是 <= 会造成数组的越界,应该是 <
for (int i = 0; i < dataList.length; i++) {
vector[i] = dataList[i];
}
int pivot = vector[low];
for (int i = low + 1; i <= high; i++) {
if (vector[i] < pivot) {
pivotpos++;
if (pivotpos != i)
swap(vector[pivotpos], vector[i]);
}
}
vector[low] = vector[pivotpos];
vector[pivotpos] = pivot;
return pivotpos;
}
void swap(int a, int b) {
int x = 0;
x = a;
a = b;
b = x;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] dataList = { 5, 7, 100, -2, 0, 10, 121 };
QuickSort qs = new QuickSort();
qs.quickSort(dataList, 0, 6);
}
}