Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 数组中元素按值排序的算法_Java_Arrays_Algorithm - Fatal编程技术网

Java 数组中元素按值排序的算法

Java 数组中元素按值排序的算法,java,arrays,algorithm,Java,Arrays,Algorithm,我很难想出一个算法来对三个随机值进行排序,这三个值被放入一个数组中 int[] sortArray = anArray; if (anArray[0] >= anArray[1]){ sortArray[1] = anArray[0]; sortArray[0] = anArray[1]; } else if (sortArray[1] >= anArray[2]){ sortArray[2] = sortArray[1];

我很难想出一个算法来对三个随机值进行排序,这三个值被放入一个数组中

int[] sortArray = anArray;

if (anArray[0] >= anArray[1]){
        sortArray[1] = anArray[0];
        sortArray[0] = anArray[1];
    } else if (sortArray[1] >= anArray[2]){
        sortArray[2] = sortArray[1];
        sortArray[1] = anArray[2];
    } else if (sortArray[0] >= sortArray[1]){
        sortArray[1] = anArray[0];      
    } else if (sortArray[0] >= sortArray[2]){
        sortArray[2] = anArray[0];
    } else {
    }
这就是我一直在玩弄的东西,我不能让它在每一个随机生成的数字中工作

输出

The original array:
Entry 0 is 9
Entry 1 is 5
Entry 2 is 0

The sorted array: 
Element 0 is 9
Element 1 is 9
Element 2 is 0

任何工作算法,无论是否是伪代码,都将非常感激。

首先要理解,只有一个if条件才能满足您编写的所有条件

代码中的问题:
如果我拿走你的数据集,那它将是第一个。 在该块中,您只指定了两个值,而不是所有三个值。
解决方案:
使用嵌套if检查或和/或条件了解值的顺序。 并更改代码以在一个块中指定所有三个值

范例

if (anArray[0] >= anArray[1]  ){
    if(anArray[0] >= anArray[2]){
        // found max value  anArray[0]
        sortArray[0] = anArray[0];
        // find the max of remaining values by using anArray[2] > anArray[1]
        // set the 2nd and 3rd value 
        if(anArray[2] > anArray[1]){
            sortArray[1] = anArray[2];
            sortArray[2] = anArray[1];
        }else{
            sortArray[1] = anArray[1];
            sortArray[2] = anArray[2];
        }
    }else{
        // found max value in  anArray[2]
        sortArray[0] = anArray[2];
        // array[0] is greater than array[1] in top if .So we know order of anArray[0] and anArray[1]
        sortArray[1] = anArray[0];
        sortArray[2] = anArray[1];
    }

} else{
    if(anArray[1] >= anArray[2]){
        // found max value  as anArray[1] 
        sortArray[0] = anArray[1];
        // finding order between  anArray[0] and  anArray[2]
        if(anArray[0] >= anArray[2]){
            sortArray[1] = anArray[0];
            sortArray[2] = anArray[2];
        }else{
            sortArray[1] = anArray[2];
            sortArray[2] = anArray[0];
        }
    }else{
        //found max value as anArray[2]
        sortArray[0] = anArray[2];
        // the order between anArray[1] and anArray[0] we already know
        sortArray[1] = anArray[1];
        sortArray[2] = anArray[0];
    }
}
上面的解决方案是使用if嵌套

使用和/或您可以按以下方式执行此操作-

if (anArray[0] >= anArray[1] && anArray[0] >= anArray[2] && anArray[2] >= anArray[1] ){
    sortArray[0] = anArray[0];
    sortArray[1] = anArray[2];
    sortArray[2] = anArray[1];
}else if (anArray[0] >= anArray[1] && anArray[2] >= anArray[0] ){
    sortArray[0] = anArray[0];
    sortArray[1] = anArray[1];
    sortArray[2] = anArray[2];
}else if (anArray[1] >= anArray[0] &&  anArray[1] >= anArray[2] && anArray[0] >= anArray[2]  ){
    sortArray[0] = anArray[1];
    sortArray[1] = anArray[0];
    sortArray[2] = anArray[2];
}else if (anArray[1] >= anArray[0] &&  anArray[2] >= anArray[1] ){
    sortArray[0] = anArray[2];
    sortArray[1] = anArray[1];
    sortArray[2] = anArray[0];
}
很明显,上述代码可能有缺陷,不推荐使用。
最好的选择是使用

Arrays.sort(anArray)
从集合api。

这是最好的方法:

Arrays.sort(anArray);

使用循环并对它们进行排序。这是一个赋值吗?如果没有,就使用。正常排序有什么问题
anArray.sort(comparator)
?在
sortArray
中设置最多2个值时,由于您的else if结构,因此进行排序。这到底是怎么回事?