描述
输入N个无序的数,请将相同的数删成只剩下一个,并将删除后的数列从小到大排序后输出。(如输入:8 32 12 25 12 8 36 25 26 12 ,输出:8 12 25 26 32 36)
输入描述
二行,第一行整数N(小于1000),表示有N个整数;
第二行,N个无序的整数(小于32767)。
输出描述
排序后并删除相同整数输出。
用例输入 1
10 8 32 12 25 12 8 36 25 26 12
用例输出 1
8 12 25 26 32 36
#include<bits/stdc++.h>
using namespace std;
int a[10000],b[10000];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<n-1;i++){
for(int j=i+1;j<=n;j++){
if(a[i]==a[j]){
a[j]=32768;
}
}
}
for(int i=1;i<n;i++){//n个数仅需要n轮的比较
for(int j=1;j<=n-i;j++){
if(a[j]>a[j+1]){//如果前面一个数比后一个数大,则交换。
int t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}//swap(a[j],a[j+1]);
}
}
for(int i=1;i<=n;i++){
if(a[i]!=32768){
cout<<a[i]<<" ";
}
}
return 0;
}
一开始是把重复的赋值为0的,后来发现错了,卡个bug,因为a[i]要小于32767,就赋值为32768,就不会撞上相同数字了,当然也能用字符串做,多多指教!^o^