配列を次のように設定した場合:
test[10] = {1,2,1,3,4,5,6,7,8,3,2}
重複する 1、重複する 2、重複する 3 があるため、3 を返したいのですが、どうすればこれを達成できますか? 効率は関係ありません。
配列を次のように設定した場合:
test[10] = {1,2,1,3,4,5,6,7,8,3,2}
重複する 1、重複する 2、重複する 3 があるため、3 を返したいのですが、どうすればこれを達成できますか? 効率は関係ありません。
このコードを使用できます。
int main()
{
int test[10] = {1,2,1,3,4,5,6,7,8,3,2};
int i,j,dupliCount = 0;
for (i =0; i<(sizeof(test)/sizeof(int));i++)
{
for(j=i+1;j<(sizeof(test)/sizeof(int));j++)
{
if (test[i] == test[j])
{
++dupliCount;
break;
}
}
}
printf("duplicate count %d",dupliCount);
}
まず、重複を見つけやすくするために、配列をソートする必要があります。
並べ替え (バブル 並べ替え) の例を次に示します。
void bubbleSort(int numbers[], int array_size) {
int i, j, temp;
for (i = (array_size - 1); i > 0; i--) {
for (j = 1; j <= i; j++) {
if (numbers[j-1] > numbers[j]) {
temp = numbers[j-1];
numbers[j-1] = numbers[j];
numbers[j] = temp;
}
}
}
}
次に、それをもう一度ループしvalues[i]
て==
、values[i+1]
注: for ループを作成するときは、長さを 1 短くして補正values[i+1]
し、範囲外にならないようにします。