实现选择排序:输入的数组与返回的数组一起更改

时间:2016-03-11 16:15:49

标签: java arrays selection-sort

我有一个操纵笛卡尔点的程序。在程序的一个位置,我将x和y值加载到Point数组中。没什么大不了。但是,我想用x值对这个数组进行排序,并将其设置为一个新变量,同时仍保持原始数组的方式。 原始数组是“points”,新数组定义为:

points1 = sortBy(points, "x");

sortBy方法在前面定义为:

private static Point[] sortBy( Point[] pointsXY, String xOrY) {
  int min;
  Point[] inputPoints = pointsXY;

  if( xOrY == "x"){
  for( int i = 0; i < (inputPoints.length - 1); i++ ) {
     min = i;
     for( int j = i+1; j < inputPoints.length; j++ ) {
        if( inputPoints[j].getX() < inputPoints[min].getX()) min = j;  
     }
     // Swap points[i] and points[min]
     Point temp = inputPoints[i];
     inputPoints[i] = inputPoints[min];
     inputPoints[min] = temp;
  }

稍后会有一个“else if”块,而是采用“y”代替。然后它执行:return inputPoints;

但是,当我打印这些数组时,我得到的是完全相同的东西 - 两个数组按x值排序。我通过输出未排序的数组来测试输出,它工作正常。 我也试过使用这种方法而不是静态的,它给出了相同的输出。

1 个答案:

答案 0 :(得分:0)

Point[] inputPoints = pointsXY;不复制数组,只是为同一个数组创建一个新名称(inputPoints)。要创建数组的副本,您应该使用Point[] inputPoints = pointsXY.clone();javadoc)。