开发者社区> 问答> 正文

关于java 快速排序问题

关于java 快速排序问题这个输出报错 我认为 while 有问题:

import java.util.ArrayList;
public class QuickSort {
public static void main(String[] args) {
    ArrayList<Integer> lists = new ArrayList<Integer>();
    lists.add(5);
    lists.add(2);
    lists.add(6);
    lists.add(1);
    lists.add(7);
    lists.add(3);
    lists.add(4);
    //System.out.println(isOdd(3));
    //System.out.println(isOdd(4));

    System.out.println(lists);
    //System.out.println(getMiddle(lists));
    //System.out.println(lists.indexOf(getMiddle(lists)));
    System.out.println(sort(lists));
}
//
public static boolean isOdd(int i) {
    if(i % 2 == 0) {
        return false;
    }
    else {
        return true;
    }

}
//
private static Integer getMiddle(ArrayList<Integer> array) {
    if (isOdd(array.size())) {
        return array.get(array.size()/2);
    }
    else {
        return array.get(array.size()/2);
    }           

}
private static ArrayList<Integer> sort(ArrayList<Integer> array) {
    int mid = getMiddle(array);
    int midIndex = array.indexOf(mid);
    int i = 0;
    int j = array.size()-1;
    int temp = array.get(0);
    while(i!=midIndex || j !=midIndex) {
        if(array.get(i) < mid) {
            i++;
        }
        else {
            if (array.get(j)>mid) {
                j--;
            }
            else {
                array.set(i, array.get(j));
                array.set(j, temp);
                i++;
                j--;
                temp = array.get(i);
            }
        }
    }
    return array;
}
}

展开
收起
蛮大人123 2016-03-18 15:05:39 2333 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    交换部分错了

                    temp = array.get(i);
                    array.set(i, array.get(j));
                    array.set(j, temp);
                    i++;
                    j--;
    2019-07-17 19:06:47
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载