所以我做了一个方法来排序数组的元素。但是,当我运行程序并调用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;
请帮忙!
答案 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;
}
}
}
它将按升序对数组进行排序。