【算法】排序

排序算法在信息学非常常用。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.mzph.cn/pingmian/16663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element ui 的el-input输入一个字后失去焦点,需重新点击输入框才能再次输入!

解决方案&#xff1a; 我是form表单嵌套表格&#xff0c;里面的el-input输入框&#xff0c;输入第一个值的时候会突然失去焦点&#xff0c;需要再次点击输入框才能正常输入&#xff0c;原因是table的key值&#xff0c;需要改成正常的index即可&#xff0c;如果你是循环的&…

阿里云物联网平台python ADK 发布/订阅

基础知识学习参考&#xff1a; 1、使用消息通讯Topic 2、python link SDK 一、环境变量配置 1、python3.6&#xff1a;下载安装 2、安装paho-mqtt 1.4.0版本 pip install paho-mqtt1.4.03、安装安装Link SDK最新版本 pip install aliyun-iot-linkkit 4、下载python ADK…

elementui table 回显的时候勾选状态消失 分页切换的时候table的选中状态会被重置

<el-table v-loading"loading2" ref"multipleTable" :data"reportList" sort-change"handleReportSortChange" selection-change"handleReportSelectionChange">回显代码getReportList(){ //table列表的值this.loadin…

python-编写函数判断一个三位数是否为水仙花数。

【问题描述】要求编写函数isflower(n)判断一个三位数n是否为水仙花数,如果是&#xff0c;则返回True&#xff0c;否则返回False。在主程序中要求调用该函数并输出三位数中所有的水仙花数。所谓"水仙花数"是指一个3位数&#xff0c;其各位数字立方和等于该数本身。例如…

VirtualBox安装ubuntu22.04记录

一,VirtualBox 软件安装 虚拟机&#xff08;Virtual Machine&#xff09;指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。 常见的虚拟机软件主要有两款 VMware 和 VirtualBox 。VMwar…

【最新区块链论文录用资讯】CCF A—FSE 2024 共4篇 附pdf

Conference&#xff1a;ACM International Conference on the Foundations of Software Engineering (FSE) CCF level&#xff1a;CCF A Categories&#xff1a;软件工程/系统软件/程序设计语言 Year&#xff1a;2024 Num&#xff1a;4 1 Title: Demystifying Invariant …

项目启动 | 晟泰克再度牵手盘古信息,引入IMS V6系统实现数字化深度推进

当前&#xff0c;中国汽车零部件行业的数字化转型正在快速推进&#xff0c;数字化工业软件已经广泛应用于汽车零部件的研发、生产和服务等各个环节&#xff0c;赋能行业实现降本减存&#xff0c;提质增效&#xff0c;有力推动了行业高质量发展。 成立于2003年的合肥晟泰克汽车…

深度学习之加宽全连接

1.Functional API 搭建神经网络模型 1.1.利用Functional API编写宽深神经网络模型进行手写数字识别 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.model_selection import train_test_spli…

决策树与机器学习实战【代码为主】

文章目录 &#x1f6f4;&#x1f6f4;引言&#x1f6f4;&#x1f6f4;决策树使用案例&#x1f6f4;&#x1f6f4;numpy库生成模拟数据案例&#x1f6f4;&#x1f6f4;决策树回归问题&#x1f6f4;&#x1f6f4;决策树多分类问题 &#x1f6f4;&#x1f6f4;引言 决策树是一种经…

1-Django开端--学生管理系统

目录 项目结构 前端页面: add_data.html class_data.html index.html apps.py models.py views.py settings,py urls.py ...实现简略的身架... 项目结构 前端页面: add_data.html --添加数据. {% extends index/index.html %}{% block content %} <div class&qu…

强化学习,第 2 部分:政策评估和改进

目录 一、介绍 二、关于此文章 三、求解贝尔曼方程 四、策略评估 4.1 更新变体 4.2 例描述 五、策略改进 5.1 V函数描述 5.2 政策改进定理 六、策略迭代 七、值迭代 7.1 算法描述 7.2 异步值迭代 八、广义策略迭代 九、结论 一、介绍 R强化学习是机器学习中的一…

C#子窗体嵌入主窗体

上位机开发中&#xff0c;经常会需要将子窗体嵌入到主窗体。 运行结果 核心实现&#xff1a; private void button2_Click(object sender, EventArgs e){Form3 childForm new Form3();//判断容器中是否已经打开子窗体&#xff0c;如果打开现将其关闭foreach (Control item in…

RocketMq源码解析三:路由管理

Nameserver的主要作用是为消息的生产者和消息消费者提供关于主题Topic的路由信息&#xff0c;那么Nameserver需要存储路由的基础信息&#xff0c;还要管理Broker节点&#xff0c;包括路由注册、路由删除等。 一、路由元数据 路由元数据主要保存了topic信息&#xff0c;broker信…

5.22 R语言-正态性检验

正态性检验 正态性检验的目的是确定一组数据是否符合正态分布&#xff08;也称高斯分布&#xff09;。在统计分析和数据建模中&#xff0c;正态性假设是许多统计方法和模型的基础。了解数据是否符合正态分布有助于选择适当的统计方法和确保分析结果的有效性。 本文主要从概率…

执法行动高压下,勒索软件攻击仍持续增加

执法行动 最近几年&#xff0c;随着网络犯罪特别是勒索软件犯罪的日益猖獗&#xff0c;勒索软件攻击已经对网络空间安全构成重大威胁。互联网不是法外之地&#xff0c;执法机构也对应加强了执法力度&#xff0c;对全球威胁重大的网络犯罪团伙进行重点打击。对勒索软件团伙所控…

golang、laravel对接stripe海外支付接口的总结和流程(通俗易懂)

目录 stripe是什么&#xff1f; 环境 配置后台 首先让管理员把你设置成为开发者 然后进入后台 然后你要创建产品&#xff0c;开单周期要写每天&#xff0c;我这里理解成每天都会有人买的 获取产品id 获取密钥&#xff0c;后续代码需要用到 支付代码 唤起支付页面 测…

甘肃省大学生志愿服务西部计划报名流程及免冠证件照处理

在甘肃省&#xff0c;大学生志愿服务西部计划是一项旨在鼓励和引导大学生参与西部地区社会服务与发展的重要项目。随着2024年报名季的到来&#xff0c;许多有志青年正准备投身这一有意义的事业。本文将详细介绍报名流程&#xff0c;并提供免冠证件照的处理技巧&#xff0c;帮助…

设计模式11——代理模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 代理模式&#xff08;Proxy&am…

每日AIGC最新进展(12):在舞蹈视频生成中将节拍与视觉相融合、Text-to-3D综述、通过内容感知形状调整进行 3D 形状增强

Diffusion Models专栏文章汇总&#xff1a;入门与实战 Dance Any Beat: Blending Beats with Visuals in Dance Video Generation https://DabFusion.github.io 本文提出了一种名为DabFusion的新型舞蹈视频生成模型&#xff0c;该模型能够根据给定的静态图像和音乐直接生成舞蹈…

免费 OSS 资源 Backblaze B2 使用最新指南

免费的对象存储资源日渐枯竭&#xff0c;Backblaze 是为数不多仍提供免费 OSS 的良心厂商。另外一个则是大名鼎鼎的 Cloudflare R2。虽然免费&#xff0c;但 Backblaze 也修改了政策&#xff1a;如果不验证信用卡的话是不能打开 Public 选项的&#xff0c;或者支付一美金。估计…