请帖出你的完整代码。
QuickSort qs = new QuickSort();
qs.quickSort(dataList, 0, 6);这里看不到,就不明白你的代码的意思

解决方案 »

  1.   

    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++){
    System.out.println(dataList[i] + " ");
    }
    }

    int partition(int dataList[],int low,int high){
    int pivotpos = low;
    int Vector[] = null;
    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);
    }}
      

  2.   

    quickSort(dataList, 0, 6); 第三个参数为dataList中的元素位置,dataList.length=6,最后一个元素为dataList[5],即dataList.length -1 
      

  3.   

    int pivotpos = low;
    int Vector[] = null;
    for (int i = 0; i <= dataList.length; i++) {
    Vector[i] = dataList[i];
    }
      

  4.   

    Exception in thread "main" java.lang.NullPointerException
    at org.demo.QuickSort.partition(QuickSort.java:21)
    at org.demo.QuickSort.quickSort(QuickSort.java:8)
    at org.demo.QuickSort.main(QuickSort.java:49)Vector[i] = dataList[i];
    int pivotpos = partition(dataList,left,right);
    qs.quickSort(dataList, 0, 6);
    这三句报错
      

  5.   

    我给你修改过了。也指出了你的错误。注意你的for循环的 <= 与 < 的使用的情形。你这里的问题很严重啊,出现了2个错误。
    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);
    }}
      

  6.   

    int Vector[] = new int[dataList.length];
      

  7.   

    at org.demo.QuickSort.partition(QuickSort.java:21)
    at org.demo.QuickSort.quickSort(QuickSort.java:8)
    at org.demo.QuickSort.main(QuickSort.java:49)
    这三行出错,楼主可以自己检查代码,打断点来跟踪,慢慢就学会调试了。
      

  8.   


    可是为什么没有排序啊··这是快速排序算法啊你的问题是:为什么会报错,而不是“这个算法”该如何实现。我当然没有修改你的算法了。为什么没有排序,应该自己检查一下代码的逻辑,看看自己什么地方出错了。可以实现用伪代码把逻辑写出来,建立模型,分析一下,然后再逻辑正确的前提下,在写你的java代码。中间如果代码出错,你应该学会用IDE的debug工具,进行代码分析。
      

  9.   

    下面是Java的JDK自带的排序。 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,借鉴人家的经验。或者你的排序有什么特殊的要求?也需要自己来写。那么就先思考整个完整的排序算法,写在纸上,或者画出排序的流程图。然后再去编码。