0

これらの2つのメソッドをどのように呼び出したり使用したりするかなど、これらの2つのメソッドを実装する方法について混乱していますか? 最初のものは無効なので、どのように機能しますか?

誰かが配列を使用してこれを実装してください。または、最初のvoidメソッドがどのように機能するかを理解するのに役立ちますか?

public static void insertionsort(int[] numbers) {
    for (int i = 0; i < numbers.length; i++) {
         int copyNumber = numbers[i];
         int j = i;
         while (j > 0 && copyNumber < numbers[j-1]) {
             numbers[j] = numbers[j-1];
             j--;
         }
         numbers[j] = copyNumber;
    }
}

public int[] InsertionSort(int[] data){
    int len = data.length;
    int key = 0;
    int i = 0;
    for(int j = 1;j<len;j++){
        key = data[j];
        i = j-1;
        while(i>=0 && data[i]>key){
            data[i+1] = data[i];
            i = i-1;
            data[i+1]=key;
        }
    }
    return data;
}
4

3 に答える 3

1

戻り値の型を持つ関数は、何かを行い (コードを実行し)、その関数を呼び出したコードに何らかの結果を返します。戻り値の型のない関数は、一部のコードを実行しますが、結果を返しません (ほとんどの場合必要ないため)。

次の 2 つの関数について考えてみましょう。

public static int withResult( int someParameter)
{
    //execute some code here

    int someReturnValue = //result of the code above

    return someReturnValue;
}

public static void withoutResult( int someParameter)
{
    //execute some code here which produces no result which could be of interest to the caller (calling code)
} //end the function without returning anything

次のように呼び出します。

int result;
result = withResult( 1234 );//executes the function and stores its return type in 'result'
withResult( 468 );//executes the function but does not store the return type anywhere ("throws it away")
withoutResult ( 1234 );//simply executes the function
result = withoutResult ( 5678 ); //this makes no sense because the function does not return anything
于 2013-11-09T04:36:15.237 に答える
1

Javaでは、参照を含め、すべてが値渡しされます。メソッドでは、void配列への参照の値が渡されます。int []そのため、新しいをに割り当てることはできませんが、でnumbersを変更することはできます。intsnumbers

于 2013-11-09T04:17:49.837 に答える
0

void を返す (つまり、何も返さない) 最初のメソッドには、パラメーターとして配列が渡されます。渡されるのは、宣言され、メソッドの外部でメモリが割り当てられる配列への参照です。このメソッドは、その情報を所定の場所に並べ替えます。メソッドが戻ると、その配列のデータがソートされます。

int[] myArray = getArrayInfo();       // assume this gets data in an array
WhateverClass.insertionSort(myArray); // this will sort that data

// at this point, myArray will be sorted
于 2013-11-09T04:13:59.333 に答える