问题描述:
无序表删除重复元素,升序或保持原顺序排列,要求:时间复杂度为O(n)
代码:
#include<iostream>
#include<string.h>
using namespace std;
int n, elem[30], elem_n[50];
void ascending()
{
int k = 0;
for(int i = 0; i < 50; i++)
{
if(elem_n[i])
{
elem[k] = i;
k++;
}
}
for(int i = 0; i < k; i++)
cout << elem[i] << " ";
}
void disorderly()
{
for(int i = 0; i < n; i++)
{
if(elem_n[elem[i]])
{
cout << elem[i] << " ";
elem_n[elem[i]]--;
}
}
}
int main()
{
cin >> n;
memset(elem_n, 0, sizeof(elem_n));
for(int i = 0; i < n; i++)
{
cin >> elem[i];
if(!elem_n[elem[i]])
elem_n[elem[i]]++;
}
//ascending();
disorderly();
}