#include <iostream>
#include <stdlib.h>
using namespace std;
int cmpfun(const void * a, const void * b){
return (*(int*)a - *(int*)b);
}
int main(){
int n,i,j=0;
cout<<"Enter the number of elements in the array:\n";
cin>>n;
int arr[n],arr_new[n];
for(i=0;i<n;i++)
cin>>arr[i];
qsort(arr, n, sizeof(int), cmpfun); /*Sorting the array; if you aren't allowed to use any library sorting method,
then I suggest to implement one sorting function on your own.*/
for(i=0;i<n;i++){
arr_new[j++]=arr[i];
// Excluding all duplicates
while(i<(n-1) && arr[i]==arr[i+1])
i++;
}
for(i=0;i<j;i++)
cout<<arr_new[i]<<" ";
return 0;}
Основная цель - убедиться, что дубликаты игнорируются.Итак, вы должны сначала отсортировать массив, а затем за O (n) пройти через массив, игнорируя все повторы.Обходя массив, скопируйте все уникальные значения (значения, с которыми вы сталкиваетесь в первый раз) в новый массив.
Единственное, что меня беспокоит, так это то, что соответствующий порядок элементов в староммассив не сохраняется в новом массиве.Но если вас интересует только поиск уникальных значений, тогда этот метод должен работать нормально.