私は以下の擬似コードを持っています。これは、長さの特定のソートされていない配列を取り、配列size
内の最大値と最小値を見つけることによって範囲を見つけます。私はさまざまな時間効率の方法について学んでいますがΘ(n)
、より長い配列は固定数のアクションを追加するため、以下のコードは .
たとえば、 and への実際の代入を無視するmax
とmin
(ソートされていない配列は任意であり、これらの代入は事前に不明であるため)、長さ 2 の配列では合計 5 つのアクションしか必要ありません (最終的な範囲の計算を含む)。長さ 4 の配列は合計 9 つのアクションのみを使用し、最終的な範囲計算を追加します。長さ 12 の配列は 25 個のアクションを使用します。
Θ(n)
線形関係であるため、これはすべて私を指しています。これは正しいです?
擬似コード:
// Traverse each element of the array, storing the max and min values
// Assuming int size exists that is size of array a[]
// Assuming array is a[]
min = a[0];
max = a[0];
for(i = 0; i < size; i++) {
if(min > a[i]) { // If current min is greater than val,
min = a[i]; // replace min with val
}
if(max < a[i]) { // If current max is smaller than val,
max = a[i]; // replace max with val
}
}
range = max – min; // range is largest value minus smallest