我正在研究一种方法,旨在按升序对数组进行排序。
该数组由地震标记对象组成,我需要做的是按对象的“magnitude”属性对数组进行排序。我尝试使用选择排序,但似乎元素没有正确交换。
这是我的代码:
这是我的代码:
private void sortAndPrint(int numToPrint){
Object[] quakeArray= quakeMarkers.toArray();
int indexMax;
for(int i=0; i<quakeArray.length-1; i++) {
indexMax = i;
float max = ((EarthquakeMarker)(quakeArray[i])).getMagnitude();
for( int j =i+1; j<quakeArray.length;j++){
if(((EarthquakeMarker)(quakeArray[j])).getMagnitude()>max)
indexMax = j;
}
//swap it
Object temp = quakeArray[i];
quakeArray[i] = quakeArray[indexMax];
quakeArray[indexMax] = temp;
}
//sort finished
for(int i =0; i< numToPrint; i++) {
System.out.println(((EarthquakeMarker)quakeArray[i]).getProperty("title").toString());
}
}
事实证明,这些地震并不是按其震级排序的。
在我看来,可能是交换时出了问题,因为Java是按值传递的。如果是这样,我该如何解决呢?还是问题出在其他地方?
max
。 - mroman