noip普及组3:排序算法

排序算法

①冒泡排序:O(n^2)

int n;cin>>n;

for(int i=1;i<=n;i++)cin>>a[i];

for(int i=1;i<n;i++)
    for(int j=i+1;j<=n;j++)
        if(a[j-1]>a[j])swap(a[j-1],a[j]);

for(int i=1;i<=n;i++)cout<<a[i]<<' ';

②插入排序:O(n^2)

int  n;cin>>n;

for(int i=1;i<=n;i++)cin>>a[i];

int t;
for(int i=1;i<=n;i++){
    t=a[i];

    while(i&&a[i-1]>t){
        a[i]=a[i-1];i--;
    }
    a[i]=t;
}

for(int i=1;i<=n;i++)cout<<a[i]<<' ';

③选择排序:O(n^2)

int n;cin>>n;

for(int i=1;i<=n;i++)cin>>a[i];

for(int i=1;i<n;i++){
    int minn=i;

    for(int j=i+1;j<=n;j++){
        if(a[minn]>a[i])minn=j;

    swap(a[i],a[minn]);
}

for(int i=1;i<=n;i++)cout<<a[i]<<' ';

④桶排序

int n;cin>>n;

memset(num,0,sizeof(num));
for(int i=1;i<=n;i++){
    cin>>a[i];num[a[i]]++;
}

for(int i=1;i<=1000000;i++)
    if(num[i]!=0)
        for(int j=1;j<=num[i];j++)
            cout<<i<<' ';

⑤sort排序

//从小到大
bool cmp(int a,int b){return a<b;}
sort(a+1,a+n+1,cmp);
//从大到小
bool cmp(int a,int b){return a>b;}
sort(a+1,a+n+1,cmp);
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 概述 因为健忘,加上对各种排序算法理解不深刻,过段时间面对排序就蒙了。所以决定对我们常见的这几种排序算法进行统一总...
    清风之心阅读 4,055评论 0 1
  • 一、对比分析图 均按从小到大排列 k代表数值中的"数位"个数 n代表数据规模 m代表数据的最大值减最小值 稳定性:...
    leo567阅读 4,996评论 0 1
  • 2018年10月8日 /*本节主要内容:1、 时间复杂度2、冒泡排序3、选择排序4、插入排序5、对数器概念和使用6...
    须臾之北阅读 4,145评论 0 0
  • 排序术语 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排...
    xiaoyanhan阅读 2,523评论 0 1
  • 排序(上):为什么插入排序比冒泡排序更受欢迎? 排序对于任何一个程序员来说,可能都不会陌生。你学的第一个算法,可能...
    GhostintheCode阅读 8,640评论 4 27

友情链接更多精彩内容