You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.2 KiB
C

/*
* C Program to Find the Odd Element given an Array with only two Different Element
*/
#include <stdio.h>
void printodd(int array[], int size)
{
int xor2 = array[0]; /* Will hold XOR of two odd occurring elements */
int set;
int i;
int n = size - 2;
int x = 0, y = 0;
/* The xor will basically be xor of two odd occurring elements */
for (i = 1; i < size; i++)
xor2 = xor2 ^ array[i];
/* Get one set rightmost bit in the xor2. */
set = xor2 & ~(xor2 - 1);
/* Now divide elements in two sets: */
for (i = 0; i < size; i++)
{
/* XOR of first set is finally going to hold one odd occurring number x */
if (array[i] & set)
x = x ^ array[i];
/* XOR of second set is finally going to hold the other odd occurring number y */
else
y = y ^ array[i];
}
printf("\n The ODD elements are %d & %d ", x, y);
}
int main()
{
int array[] = {10, 3, 2, 10, 2, 8, 8, 7};
int arr_size = sizeof(array) / sizeof(array[0]);
printodd(array, arr_size);
getchar();
return 0;
}
/*
The ODD elements are 7 & 3