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

C言語で配列内の一意な要素(重複しない要素)を検索するプログラム

問題の概要

配列の中から、他と重複していない「一意な要素」を見つけるには、二重ループを使用します。外側のループで現在注目している要素を取り出し、内側のループでその要素が配列内の他の場所にも存在するかどうかを確認します。

解決策

以下の配列を例に考えてみましょう。

15, 15, 16, 15, 13, 15

この場合、配列内で一度しか現れていない要素は 1613 の2つです。

アルゴリズム

配列内の一意な要素(重複しない要素)を見つけるための手順は以下の通りです。

ステップ1: 配列を宣言し、実行時に配列の要素を入力します。

ステップ2: 配列を走査し、現在注目している要素が配列内の他の位置にすでに存在するかどうかを確認します。

ステップ3: すでに存在する場合は、次の要素へ移動して処理を続けます。

ステップ4: 存在しない場合は、その要素を「重複しない一意な要素」として出力します。

サンプルプログラム

以下は、配列内の一意な要素を見つけるC言語のプログラムです。

#include <stdio.h>
#include <stdlib.h>
int uniqueEle(int array[], int n){
    int i,j;
    int count = 1;
    for(i = 0; i < n; i++){
        for(j = 0; j < n; j++){
            if(array[i] == array[j] && i != j)
            break;
        }
        if(j == n ){
            printf("\nunique elements in an array is [%d] : %d \n",count,array[i]);
            ++count;
        }
    }
    return -1;
}
int main(){
    int n,i;
    printf("\nEnter no: of elements : ");
    scanf("%d",&n);
    int array[n];
    printf("\nenter the array elements : ");
    for(i = 0; i < n; i++){
        scanf("%d",&array[i]);
    }
    uniqueEle(array, n);
    return 0;
}

実行結果

上記のプログラムを実行すると、以下のような出力が得られます。

Run 1:
Enter no: of elements: 5
enter the array elements :
11
11
15
16
13
unique elements in an array is [1] : 15
unique elements in an array is [2] : 16
unique elements in an array is [3] : 13
Run 2:
Enter no: of elements: 4
enter the array elements : 11
12
11
11
unique elements in an array is [1] : 12

処理のポイント

このプログラムでは、関数 uniqueEle() の中で二重ループを回しています。外側のループ変数 i が注目する要素、内側のループ変数 j が比較対象の要素です。array[i] == array[j] かつ i != j(同じ位置同士の比較ではない)という条件が成立した時点で、その要素は重複しているため break で内側のループを抜けます。

一方、内側のループが最後まで完走して j == n となった場合は、その要素が配列内に他に存在しないことを意味するため、一意な要素として出力します。

なお、この手法の計算量は O(n²) となるため、配列のサイズが大きくなると処理時間が増加します。より効率的な方法としては、ハッシュテーブルやソートを利用したアプローチが挙げられます。

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

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

  2. Pythonで配列(リスト)の合計を求める方法をわかりやすく解説

    この記事では、配列(リスト)の合計値を求めるという問題に対して、Pythonでの解決策とアプローチをわかりやすく解説します。 問題の定義 配列が入力として与えられたとき、その配列に含まれるすべての要素の合計を計算することを目標とします。 例えば、[1, 2, 3, 4, 5] という配列が与えられた場合、出力は 15 になります。 アプローチ1:ループを使った素朴な方法(総当たり法) 最も基本的な方法は、リストを先頭から順に走査し、各要素を合計用の変数に加算していくやり方です。手順は以下の通りです。 合計を格納する変数を 0 で初期化します。 for ループでリストの各要素を取り出し、順番に