C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#プログラムで配列内のK番目に小さい要素を見つける方法

はじめに

C#では、配列を昇順に並べ替えてからインデックスを指定するだけで、K番目に小さい要素を簡単に求められます。本記事では、Array.Sort()メソッドを使った基本的な実装方法を、サンプルコード付きでわかりやすく解説します。

ステップ1:配列を宣言する

まず、対象となる整数型の配列を宣言します。

int[] a = new int[] {
    65,
    45,
    32,
    97,
    23,
    75,
    59
};

ステップ2:配列をソートする

ここでは5番目に小さい整数を求めるものとします。まずArray.Sort()メソッドを使って配列を昇順に並べ替えます。

Array.Sort(a);

ステップ3:K番目の要素を取得する

配列のインデックスは0から始まるため、K番目に小さい要素はインデックス「k - 1」に格納されています。

a[k - 1];

完全なコード例

using System;
using System.IO;
using System.CodeDom.Compiler;

namespace Program {
    class Demo {
        static void Main(string[] args) {

            int[] a = new int[] {
                65,
                45,
                32,
                97,
                23,
                75,
                59
            };

            // k番目に小さい要素
            int k = 5;

            Array.Sort(a);

            Console.WriteLine("ソート後の配列...");
            for (int i = 0; i < a.Length; i++) {
                Console.WriteLine(a[i]);
            }

            Console.Write(k + "番目に小さい要素 = ");
            Console.WriteLine(a[k - 1]);
        }
    }
}

出力結果

ソート後の配列...
23
32
45
59
65
75
97
5番目に小さい要素 = 65

コードのポイント

  • 配列の初期化:7つの整数値を持つ配列aを作成します。
  • 順位の指定:求めたい順位(ここでは5)を変数kに代入します。
  • ソート処理:Array.Sort()により配列全体が昇順に並べ替えられます。
  • 要素へのアクセス:インデックスは0始まりのため、a[k - 1](すなわちa[4])が5番目に小さい要素「65」を指します。

補足:計算量について

Array.Sort()の平均計算量はO(n log n)です。データサイズが大きい場合や頻繁に順位を問い合わせるケースでは、ヒープ(優先度付きキュー)やクイックセレクトといったアルゴリズムを活用すると、O(n log k)や平均O(n)でより効率的に処理できます。

  1. Pythonで配列内の最大の要素を見つける方法を解説

    この記事では、「配列の中から最大の要素を求める」という問題の解決方法について詳しく解説します。 問題の概要 問題文:与えられた配列に対して、その中で最も大きい要素を計算して求める必要があります。 ここではブルートフォース(総当たり)アプローチを使用します。これは、配列全体を先頭から順番に走査しながら各要素を比較し、その時点での最大値を更新していくというシンプルかつ確実な手法です。 実装例 以下に具体的なコードを示します。 # 最大値を求める関数 def largest(arr, n): # 最大要素の初期値として最初の要素を設定 max = arr[0] # 配列全体を

  2. Pythonで配列内の最大要素を見つける方法【初心者向け解説】

    本記事では、配列の中から最大の要素を見つけるための解法とアプローチについて詳しく解説します。 問題の概要 配列が入力として与えられたとき、その中から最も大きい要素を見つけ出すことが課題となります。 アプローチ この問題は「線形探索」と呼ばれるシンプルな手法で解決できます。手順は以下の通りです。 まず、変数 max を配列の最初の要素で初期化します。 次に、2番目の要素から配列の末尾まで順番に走査していきます。 走査中の各要素について、現在の max の値と比較します。 要素が max より大きければ、max の値をその要素で更新します。 そうでなければ、そのまま次の要素へ進みます。 この処