Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 排序数组给出所有0';s_Java_Arrays_Sorting - Fatal编程技术网

Java 排序数组给出所有0';s

Java 排序数组给出所有0';s,java,arrays,sorting,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]) {

因此,我提出了一种对数组元素进行排序的方法。但是,当我运行程序并调用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;
Vector向量=新向量(长度);
for(int i=0;i

请帮忙

您的交换是错误的。您不必交换
i
'th和
j
'th元素,只需将
j
'th元素分配到
i
'th位置,并保持
j
'th元素不变

应该是:

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

首先,您没有在向量中插入任何元素。还是让我假设您没有在这里提到该代码。虽然它是不相关的循环。在每一个外环中,最大的元素都在四处移动。如果要按气泡排序,请按照算法进行排序。 应该是,

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; 
            }
        }
    }
for(int i=0;i

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

您的比较技术是错误的。请检查以下内容,我更新了您的代码。希望它能起作用。谢谢

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;
            }
        }
    }
for(int i=0;ivector.elements[j]){
长温度=向量元素[i];
向量元素[i]=向量元素[j];
向量元素[j]=温度;
}
}
}

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

写这个,long temp=vector.elements[i];向量元素[i]=向量元素[j];向量元素[j]=温度;你可以添加一个简单的System.out.println或调试它来查看问题。我交换了
I
j
,但我得到的向量仍然只有0@Eran。循环本身是否存在问题,没有为变量分配正确的数字?@ShahrokhAryana您是否使用非零值初始化
向量。元素
数组?是,将其初始化为非零,但是用户可以随时通过程序更改值,但是创建一个新的向量当我运行给定的代码时,它仍然会生成所有0的输出。您能告诉我向量的定义吗?