排序数组给出全0

时间:2016-05-05 07:57:54

标签: java arrays sorting

所以我做了一个方法来排序数组的元素。但是,当我运行程序并调用sort方法时,它会显示一个只有0的数组。这是代码:

    Vector vector = new Vector(length);

    for (int i = 0; i < length; i++) {
        for (int j = 0; j < length; j++){
            if (vector.elements[i] < vector.elements[j]) {
                long temp = vector.elements[j];
                vector.elements[i] = vector.elements[j];
                vector.elements[j] = temp; 
            }
        }
    }

    return vector;

请帮忙!

3 个答案:

答案 0 :(得分:1)

你的交换是错误的。您只需将i&#39;元素分配给j&#,而不是交换j&{39}和i个元素。 39;位置并保持j&#39;元素不变。

应该是:

            long temp = vector.elements[i]; // was j
            vector.elements[i] = vector.elements[j];
            vector.elements[j] = temp; 

答案 1 :(得分:0)

首先,你没有在矢量中插入任何元素。仍然让我假设你没有在这里提到这些代码。虽然它与循环无关。在每个外部循环中,最大的元素在这里和那里移动。如果您想按冒号排序,请按照算法进行排序。 它应该是,

for (int i = 0; i < length; i++) {
        for (int j = i+1; j < length; j++){
            if (vector.elements[i] < vector.elements[j]) {
                long temp = vector.elements[j];
                vector.elements[i] = vector.elements[j];
                vector.elements[j] = temp; 
            }
        }
    }

其次,它将按降序排序。我在java 8中也找不到.elements []方法。

答案 2 :(得分:0)

你的比较技术是错误的。请检查以下内容,我更新了您的代码。希望它应该工作。谢谢!

for (int i = 0; i < length-1 ; i++) {
    for (int j = i+1; j < length; j++){
        if (vector.elements[i] > vector.elements[j]){
            long temp = vector.elements[i];
            vector.elements[i] = vector.elements[j];
            vector.elements[j] = temp;
            }
        }
    }

它将按升序对数组进行排序。