冒泡排序
正文:
此题吾用的是冒泡排序,
只有两个方面:
排序再去重
排序:每个数比较后一个数,
如果大就交换位置;
去重:有一个变量 f , f依次等于每一个数组值(初始为第一个数,从第二个开始循环)。如果f==当前数,就重复了。
用一个新数组(b)保存a[ i ];
用一个计数器记下每一次的次数,初始为1(第一个数手动输出)。
最后输出计数器、第一个数、数组。
最后上代码:
#include<bits/stdc++.h>
using namespace std;
int a[110],b[110];
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=1;j<=n-i;j++)
{
if(a[j]>a[j+1])
{
swap(a[j],a[j+1]);//排序
}
}
}
int f=a[1];
int sum=1;//计数器
for(int i=2;i<=n;i++)
{
if(a[i]!=f)
{
b[i]=a[i];//赋值给b
sum++;//计数器加一
f=a[i];//给 f 赋值
}
}
cout << sum << endl;//输出计数器
cout << a[1]<<" ";//输出第一个数
for(int i=2;i<=n;i++)
{
if(b[i]!=0)
{
cout << a[i]<<" ";//依次输出b数组
}
}
return 0;
}
本文来自小默的博客,转载请注明原文链接:https://www.cnblogs.com/momotrace/p/17111805.html