Java 我的快速排序超出了范围
我正在创建快速排序,以便对离特定城市最近的其他城市进行排序 这是我的密码:Java 我的快速排序超出了范围,java,arraylist,quicksort,indexoutofboundsexception,Java,Arraylist,Quicksort,Indexoutofboundsexception,我正在创建快速排序,以便对离特定城市最近的其他城市进行排序 这是我的密码: private static void QuickSort(ArrayList<City> array, int First, int Last, City city ){ int Low,High,MidDistance; Low = First; High = Last; Edge compareEdge = new Edge(array.get((First +
private static void QuickSort(ArrayList<City> array, int First, int Last, City city ){
int Low,High,MidDistance;
Low = First;
High = Last;
Edge compareEdge = new Edge(array.get((First + Last)/ 2), city);
MidDistance = compareEdge.computeDistance();
do {
compareEdge = new Edge(array.get(Low),city);
while (compareEdge.computeDistance() < MidDistance){
Low += 1;
compareEdge = new Edge(array.get(Low),city);
}
compareEdge = new Edge(array.get(High),city);
while (compareEdge.computeDistance() > MidDistance){
High -= 1;
compareEdge = new Edge(array.get(High),city);
}
if (Low <= High) {
Swap(array,Low,High);
Low = Low + 1;
High = High - 1;
}
} while (Low <= High);
if (First < High){
QuickSort(array, First, High, city);
}
if (Low < Last){
QuickSort(array, Low, Last, city);
}
}
private static void Swap(ArrayList<City>array,int Low, int High){
City tempCtiy = array.get(Low);
array.get(Low).set(array.get(High));
array.get(High).set(tempCtiy);
}
private静态void快速排序(ArrayList数组,int-First,int-Last,City){
int低、高、中等距离;
低=第一;
高=最后;
Edge compareEdge=新边(array.get((First+Last)/2),城市;
MidDistance=compareEdge.ComputedDistance();
做{
compareEdge=新边(array.get(低),城市);
while(compareEdge.computeDistance()MidDistance){
高-=1;
compareEdge=新边(array.get(高),城市);
}
如果(低在中添加终止条件,而在低中添加终止条件,如下所示:
while (compareEdge.computeDistance() < MidDistance &&
&& Low < array.size()-1){
Low += 1;
compareEdge = new Edge(array.get(Low),city);
}
while(compareEdge.computeDistance()
@KienPanda:如果这有帮助,请不要忘记接受答案(计票下面的箭头符号)。我只有1个声望,因此无法投票。我将这个答案标记为有用。:)
while (compareEdge.computeDistance() < MidDistance &&
&& Low < array.size()-1){
Low += 1;
compareEdge = new Edge(array.get(Low),city);
}