> @[wuli周棋洛](/space/show?uid=94757) 桶排序,大哥
by arfa @ 2018-08-21 16:02:43
unique函数了解一下
by Rye_Catcher @ 2018-08-21 16:04:27
如果你是要了解离散化的话安利下我的博客https://rye-catcher.github.io/2018/07/15/学习笔记-几种离散化方式/
by Rye_Catcher @ 2018-08-21 16:05:42
@[wuli周棋洛](/space/show?uid=94757)
by Rye_Catcher @ 2018-08-21 16:05:47
哦哦感谢各位(⊙v⊙)
by wuli周棋洛 @ 2018-08-21 18:06:32
@[wuli周棋洛](/space/show?uid=94757)
用桶排序其实也很简单
```c
#include<bits/stdc++.h>
using namespace std;
bool a[1001];
int n,m,i;
int main()
{
cin>>n;
int b[n];
for(i=0;i<n;i++)
{
cin>>b[i];
if(a[b[i]]==0)
{
a[b[i]]++;
m++;
}
}
printf("%d\n",m);
for(i=1;i<=1000;i++)
{
if(a[i]==1)
{
printf("%d ",i);
}
}
return 0;
}
```
by tdn去世号 @ 2018-09-10 22:21:27
多谢各位大佬啦现在才学会桶排QAQ
by wuli周棋洛 @ 2018-09-11 20:25:08
其实直接把重复数改成0就好,然后输出的时候不输出0
by lioxh @ 2018-09-13 09:28:57
## 计数排序嘛。
#### pascal 路过……
```pascal
var
a:array[1..1000]of integer;
i,n,x,sum:integer;
begin
readln(n);
for i:=1 to n do
begin
read(x);
a[x]:=a[x]+1;
end;
for i:=1 to 1000 do
if a[i]<>0 then sum:=sum+1;
writeln(sum);
for i:=1 to 1000 do
if a[i]<>0 then write(i,' ');
end.
```
by 落叶拂流水 @ 2018-11-02 20:50:46
可以用STL里的sort,然后枚举两层循环排查重复,检测到重复将重复的任意一个值改为-1。不过太麻烦了,还是桶排好用。
by _melon @ 2021-05-04 08:33:41