我想实现快速排序并且输出不正确。我知道ArrayList
被引用的价值,但我不明白为什么它没有给我正确的输出。谁能告诉我我做错了什么?为快速排序算法获取错误的输出
import java.util.ArrayList;
public class Quicksort {
static ArrayList<Integer> quicksort(ArrayList<Integer> place){
if(place.size()<=1)
return place;
int median=place.size()/2;
int pivot=place.get(median);
place.remove(median);
ArrayList<Integer> place2=new ArrayList<>();
ArrayList<Integer> place3=new ArrayList<>();
for(int i=0;i<place.size();i++){
if(place.get(i)<pivot){
place2.add(place.get(i));
}else if(place.get(i)>pivot){
place3.add(place.get(i));
}else if(place.get(i)==pivot){
place3.add(place.get(i));
}
}
return concatenate(quicksort(place2),pivot,quicksort(place3));
}
static ArrayList<Integer> concatenate(ArrayList<Integer> first, int pivot, ArrayList<Integer> second){
ArrayList<Integer> third=new ArrayList<>();
for(int i=0;i<first.size();i++){
third.add(first.get(i));
}
third.add(pivot);
for(int i=0;i<second.size();i++){
third.add(second.get(i));
}
return third;
}
public static void main(String[] args) {
ArrayList<Integer> arraylist=new ArrayList<>();
arraylist.add(20);
arraylist.add(3);
arraylist.add(8);
arraylist.add(4);
arraylist.add(7);
arraylist.add(1);
arraylist.add(9);
arraylist.add(13);
quicksort(arraylist);
for(int n:arraylist){
System.out.println(n);
}
}
}
弹出的第一件事:'INT位= place.size()/ 2;'应改为' int median = place.get(place.size()/ 2);'。 – U2EF1
地方不是阵列 –
啊,对不起,同样的要点,但。 – U2EF1