Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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 选择排序-我们可以删除算法中的中间变量min吗?_Java_Sorting_Selection - Fatal编程技术网

Java 选择排序-我们可以删除算法中的中间变量min吗?

Java 选择排序-我们可以删除算法中的中间变量min吗?,java,sorting,selection,Java,Sorting,Selection,选择排序总是找到最小值并进行交换。但是我可以删除中间变量,只交换I和j吗?原始代码如下: public static void sort(int[] arr){ int n = arr.length; for( int i = 0 ; i < n ; i ++ ){ int minIndex = i; for( int j = i + 1 ; j < n ; j ++ ) if( arr[j] < arr

选择排序总是找到最小值并进行交换。但是我可以删除中间变量,只交换I和j吗?原始代码如下:

public static void sort(int[] arr){

    int n = arr.length;
    for( int i = 0 ; i < n ; i ++ ){
        int minIndex = i;
        for( int j = i + 1 ; j < n ; j ++ )
            if( arr[j] < arr[minIndex] )
                minIndex = j;

        swap( arr , i , minIndex);
    }
}

private static void swap(int[] arr, int i, int j) {
    int t = arr[i];
    arr[i] = arr[j];
    arr[j] = t;
}
公共静态无效排序(int[]arr){
int n=阵列长度;
对于(int i=0;i
我删除了minIndex并在I和j之间进行交换(见下文),它仍然有效。这还是选择排序吗?我们需要另一个变量minIndex有什么好处

public static void sort(int[] arr){

    int n = arr.length;
    for( int i = 0 ; i < n ; i ++ ){
        for( int j = i + 1 ; j < n ; j ++ )
            if( arr[j] < arr[i] )
                swap( arr , i , j);
    }
}

private static void swap(int[] arr, int i, int j) {
    int t = arr[i];
    arr[i] = arr[j];
    arr[j] = t;
}
公共静态无效排序(int[]arr){
int n=阵列长度;
对于(int i=0;i
是的,它是有效的,但您所做的交换比需要的多得多,这可能会降低效率。谢谢。什么因素决定了我们在执行程序时需要一个新的变量?事实上,你不想做比需要更多的交换。因为只使用一个变量在空间上几乎没有成本,并且将有助于避免越来越多的操作。