冒泡排序
正文:
此题吾用的是冒泡排序,
只有两个方面:
排序再去重
排序:每个数比较后一个数,
如果大就交换位置;
去重:有一个变量 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
 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号