按升序排序数组[Java]

时间:2016-02-19 14:58:09

标签: java arrays sorting

所以最近我在尝试按照数组的升序排序时遇到了一个问题:

private PlaneSeat[] sortSeats() {
    PlaneSeat[] tempAr = seat;
    int temp, tempI, tempJ;

    for (int i = 0; i < tempAr.length; i++) {
        for (int j = 0; j < tempAr.length; j++) {
            if (tempAr[i].isOccupied()) {
                tempI = tempAr[i].getCustomerID();
                tempJ = tempAr[j].getCustomerID();
                if (tempI < tempJ) {
                    temp = tempI;
                    tempI = tempJ;
                    tempJ = temp;
                }
            }
        }
    }
    return tempAr;
}

我要做的是将座位数组分配给临时数组,因为我不想覆盖原始数组中的值。然后,我试图比较临时数组中的customerID并根据customerID的升序排序。然后,从我的主要方法,我称之为:

tempAr = sortSeats();
        for (int i = 0; i < tempAr.length; i++) {
            if (tempAr[i].isOccupied()) {
                System.out.println("SeatID " + tempAr[i].getSeatID()
                        + " assigned to CustomerID "
                        + tempAr[i].getCustomerID());
            }
        }

然而,有了这些,它没有根据customerID排序,它仍然返回原始数组。有什么想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

这里你只是交换temp变量但没有将它设置为原始数组:

if (tempI < tempJ) {
                temp = tempI;
                tempI = tempJ;
                tempJ = temp;
 }

所以我认为你应该在数组中交换PlaneSeat:

if (tempI < tempJ) {
               PlaneSeat tempSeat = tempAr[i];
               tempAr[i] = tempAr[j];
               tempAr[j] = tempSeat;
 }

答案 1 :(得分:0)

temp,tempI等是原始变量,因此它们被重新分配但原始数组不会改变。你需要的是切换数组数据:

if (tempI < tempJ) {
   tempAr[i] = tempj;
   tempAr[j] = tempI;
}