当前位置: 首页 > news >正文

【算法】排序

排序算法在信息学非常常用。Hello!大家好,我是@学霸小羊,今天讲几个排序算法。

1.“打擂台”排序

思路:a[ i ]和a[ j ]打擂台(i<j)。

这个方法简单易懂,只需要看看需不需要交换。按从大到小排,如果a[ i ]<a[ j ],那就要换;从小到大排,如果a[ i ]>a[ j ],那就要换。

#include<bits/stdc++.h>
using namespace std;
int a[1001],n;
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}//从大到小排序 for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i<j){if(a[i]<a[j]) swap(a[i],a[j]);}else if(j<i){if(a[j]<a[i]) swap(a[i],a[j]);}else continue;}}for(int i=1;i<=n;i++){cout<<a[i]<<" ";}return 0;
}

你以为这就完了吗?才!怪!

上面代码的时间复杂度是O(n^2)!算是比较大的了。

话说其实可以简化一下,将中间的双重循环变一下。

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

这样接可以稍微缩短一下时间,时间复杂度变为(n+(n-1)+(n-1)+···+1)。

2.冒泡排序

这儿排序可以用一句话形容:将最大值冒上去。

代码:

#include<bits/stdc++.h>
using namespace std;
int a[1001],n;
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}//从小到大排序 for(int i=n;i>1;i--){for(int j=2;j<=n;j++){if(a[j-1]>a[j]) swap(a[j],a[j-1]);}}for(int i=1;i<=n;i++){cout<<a[i]<<" ";}return 0;
}

3.插入排序

将变量取出,然后找到一个合适的位置插进去。

就是一个字:找!

代码:

#include<bits/stdc++.h>
using namespace std;
int a[1001],n;
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}//从小到大排序 int j;int current;for(int i=0; i<n; i++){j = i ;current = a[i];while(j>=0 && a[j-1]> current){a[j] = a[j-1];j--;}a[j] = current;}for(int i=1;i<=n;i++){cout<<a[i]<<" ";}return 0;
}

4.sort()排序

这是一个c++标准函数。

sort(函数名+开始下标,函数名+结束下标,其他);

话都不多说,上代码!

#include<bits/stdc++.h>
using namespace std;
int a[1001],n;
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}//从小到大排序sort(a+1,a+n+1);for(int i=1;i<=n;i++){cout<<a[i]<<" ";}return 0;
}

好啦!今天就讲到这,小伙伴们,拜拜!

http://www.lryc.cn/news/355295.html

相关文章:

  • 前端开发之xlsx的使用和实例,并导出多个sheet
  • 创建数据库数据插入、更新与删除
  • 【CTF Web】CTFShow web3 Writeup(SQL注入+PHP+UNION注入)
  • 常见API(JDK7时间、JDK8时间、包装类、综合练习)
  • Docker数据卷(volume)
  • 30.哀家要长脑子了!---栈与队列
  • 多重继承引起的二义性问题和虚基类
  • ciscn
  • 智能的PHP开发工具PhpStorm v2024.1全新发布——支持PHPUnit 11.0
  • Vue2+Element 封装评论+表情功能
  • 【k8s】存储 pvc 参数列表
  • 数据集007:垃圾分类数据集(含数据集下载链接)
  • Spring常用注解(超全面)
  • HQL面试题练习 —— 合并活动日期
  • 基于SVm和随机森林算法模型的中国黄金价格预测分析与研究
  • Host头攻击-使用反向代理服务器或负载均衡器来传递路由信息
  • AWS容器之Amazon ECS
  • win10/win11 优先调用大核的电源计划性能设置
  • 模型实战(20)之 yolov8分类模型训练自己的数据集
  • 好消息!PMP纸质证书可以领取啦!(22年11月至23年8月)
  • select函数(Unix系统)
  • 设计模式16——策略模式
  • Putty: 随心御剑——远程启动服务工具plink
  • Vectorworks 2024 Mac安装包下载Vectorworks 2024安装教程3D建模设计工具
  • CSRF 攻击详解
  • 单链表OJ题(课堂总结)
  • cad角度如何精确到0.1
  • STM32H743+USBHID+CubeMX配置
  • 路由传参和获取参数的三种方式
  • 代码随想录算法训练营第四十一天|509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯