关于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;
}
}
交换部分错了
temp = array.get(i);
array.set(i, array.get(j));
array.set(j, temp);
i++;
j--;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。