冒泡排序


正文:

此题吾用的是冒泡排序,

只有两个方面:

排序再去重

排序:每个数比较后一个数,
如果大就交换位置;

去重:有一个变量 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;
}

posted @ 2023-02-11 15:39  Momo·Trace  阅读(70)  评论(0编辑  收藏  举报