1. 程式人生 > 其它 >小哼買書_桶排序、氣泡排序、快速排序與簡單的STL的應用_C語言

小哼買書_桶排序、氣泡排序、快速排序與簡單的STL的應用_C語言

技術標籤:# 啊哈!演算法

題目要求

將書去重並從小到大排序

輸入

10
20 40 32 67 40 20 89 300 400 15

輸出

15 20 32 40 67 89 300 400

方法一 應用桶排序

先去重後排序

#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
	int n,num,a[1005]={0};
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>num;
		a[num]++;
	}
	for(int i=
0;i<1005;i++) { if(a[i]!=0) cout<<i<<" "; } return 0; }

方法二 氣泡排序、快速排序

先排序後去重

#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
	int n,a[101]={0};
	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]) { int t=a[j];a[j]=a[j+1];a[j+1]=t; } } cout<<a[1]<<" "; for(int i=2;i<=n;i++) if(a[i]!=a[i-1]) cout<<a[i]<<" ";//a[i]!=a[i-1]當前的與前一個比較!! return 0; }

方法三 STL

set( )可以實現直接去重且按升序排列

  • set容器內只能通過迭代器(iterator)訪問
  • set::iterator it;得到迭代器it,並且可以通過*it訪問set裡的元素
#include<stdio.h>
#include<iostream>
#include<set>
using namespace std;
int main()
{
	int n,num;
	cin>>n;
	set<int> a;
	for(int i=0;i<n;i++)
	{
		cin>>num;
		a.insert(num);
	}
	for(set<int>::iterator it=a.begin();it!=a.end();it++)
		printf("%d ",*it);
	return 0;
}