桶排序:
#include<iostream>
#include <cstring>
using namespace std;
Int main()
{
int b[101],k,n;
memset(b,0,sizeof(b));//初始化
cin>>n;
for(int i=1;I<=n;i++)
{
cin>>k;
b[k]++;//将关键字等于k的值全部装入第k桶
}
for(int i=0; i<=100;i++)
while (b[i]>0)
{
cout<<i<<" " ;
b[i]--;//输出排序结果
}
cout<<endl;
}
快速排序:
#include<cstdio>
using namespace std;
int a[1000];
void mysort(int l,int r)
{
//从小到大排序
if(l<r)
{
int key,low,high;
key=a[l]; //取一个基准值,可以是任意,但这里用的是区间最左边的值
low=l; //区间左边指针low
high=r; //区间右边指针high
while(low<high)
{
while(low<high&&a[high]>=key)
high--;//区间右端的值大于基准,右端指针向区间左侧逼近
if(low<high) //减少重复操作
a[low++]=a[high];//小于基准的放左边
while(low<high&&a[low]<=key)
low++;//区间左端的值小于于基准,左端指针向区间右侧逼近
if(low<high)
a[high--]=a[low]; //大于基准的放右边
}
a[low]=key;//将基准放到相对于基准来说已经有序的位置(即基准左侧都小于基准值,右侧都大于基准值)
mysort(low+1,r);//分治基准左侧
mysort(l,low-1);//分治基准右侧
}
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
mysort(0,n-1);
for(int i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
当然我们有STL:
#include<cstdio>
#include<algorithm>
using namespace std;
int n,num[100010];
int main()
{
scanf("%d",&n);
for(int i = 1;i <= n;i ++)
scanf("%d",&num[i]);
sort(num+1,num+1+n);
for(int i = 1;i <= n;i ++)
printf("%d ",num[i]);
return 0;
}
归并排序:
#include <iostream>
using namespace std;
int t[200000],arr[200000],n;
long long num=0;
void msort(int l,int r)
{
if(l==r)return;
int mid=(l+r)/2;
int a=l,b=mid+1,c=1;
msort(l,mid);
msort(mid+1,r);
while(a<=mid&&b<=r)
{
if(arr[a]>arr[b])
{
t[c]=arr[b];
num+=mid-a+1;
c++;b++;
}
else
{
t[c]=arr[a];
c++;a++;
}
}
while(a<=mid)
{
t[c]=arr[a];
a++;c++;
}
while(b<=r)
{
t[c]=arr[b];
b++;c++;
}
for(int i=1;i<=r-l+1;i++)
arr[l-1+i]=t[i];
}
int main()
{
cin >> n;
for(int i=1;i<=n;i++)
cin >> arr[i];
msort(1,n);
for(int i = 1; i <= n; i ++)
cout << arr[i] <<" ";
return 0;
}
当然啦我们还有STL:
#include<cstdio>
#include<algorithm>
using namespace std;
int n,num[100010];
int main()
{
scanf("%d",&n);
for(int i = 1;i <= n;i ++)
scanf("%d",&num[i]);
stable_sort(num+1,num+1+n);
for(int i = 1;i <= n;i ++)
printf("%d ",num[i]);
return 0;
}
当然啦排序算法不只有这些呢!
这些只是一些比较优良实用的算法 那些复杂度高的为什么要用泥233(⊙o⊙)?
NOIP2016 RP++!