[c++][笔记]浅谈几种排序方式---冒泡排序,选择排序,桶排序

news/2024/9/20 7:48:32

 

一、algorithm里的sort函数 

#include <cstdio> // 数据小的可以用iostream
#include <algorithm> // 不能忘记算法库,否则会编译失败。
using namespace std;
int main()
{int n;scanf("%d", &n);int a[n+5] = {};for (int i = 1; i <= n; i++){scanf("%d", &a[i]);}sort(a + 1, a + n + 1);for (int i = 1; i <= n; i++){printf("%d", a[i]);}return 0;
}

二、冒泡排序


#include<iostream> //包含输入输出头文件
#include<cmath>
using namespace std; //指定名字空间
int main() 
{ //主函数int a[100]; //定义数组,大小100int N; //元素的实际个数int i = 0, j = 0; //循环变量,并进行初始化cin >> N; //输入元素个数//-------输入数据-----------for (i = 0; i<N; i++) //输入N个元素cin >> a[i]; //循环体只有一行//-------排序---------------for (i = 0; i<N - 1; i++) { //控制n-1趟冒泡for (j = 0; j<N - 1 - i; j++){if (a[j]>a[j + 1]) { //比较相邻的两个元素int tmp; //临时变量tmp = a[j]; //交换a[j] = a[j + 1];a[j + 1] = tmp;}}}//--------输出----------for (i = 0; i<N; i++) { //使用循环,输出N个元素cout << a[i] << " "; //输出a[i], 后加空格,不换行}cout << endl; //所有元素输出完之后才换行return 0; //函数返回
}

三、桶思想


#include <iostream>
using namespace std;
int n, x, a[1001];
int main()
{cin >> n;for (int i = 1; i <= n; i++){cin >> x;a[x]++;}for (int i = 1; i <= 100; i++){for (int j = 1; j <= a[i]; j++){cout << i << " ";}}return 0;

桶思想需要知道所有数据的大小范围,从而创建足够数量的桶,在数字对应编号的桶中放入元素,最后利用桶数组的下标本身的顺序性,判断是否有以及有几个元素即可倒推出排序后的数组。

四、选择排序

void select_sort(int a[], size_t len)
{int index = 0;for (int i = 0; i < len-1; i++){index = i;for (int j = i+1; j < len; j++){//找最小元素下标if (a[j] < a[index]){index = j;}}//将最小元素下标和排序序列的起始位置交换swap(a[i], a[index]);}
}

选择排序与冒泡排序不同的是,冒泡排序是依次相邻两个比较,最后推到一侧的一定是最值。选择排序是先定位置,比如我要先找第一位的,就只拿现在第一位的去跟其他每一个比,这样下来一圈也选出了最值

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/57754.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Java反序列化漏洞-TemplatesImpl利用链分析

目录一、前言二、正文1. 寻找利用链2. 构造POC2.1 生成字节码2.2 加载字节码1)getTransletInstance2)defineTransletClasses2.3 创建实例3. 完整POC三、参考文章 一、前言 java.lang.ClassLoader#defineClassdefineClass可以加载字节码,但由于defineClass的作用域是protecte…

Camunda Modeler流程设计器

1、介绍 任何可执行流程都需要预先设计和配置业务流程模型和BPMN图,BPMN图可以让使用者更容易理解流程的结构,Camunda Modeler是一个可视化设计和实现BPMN图表的工具。 下面是官方使用文档:1、Modeler中绘制BPMN介绍 2、桌面版Modeler使用介绍 2、相关概念 可以将BPMN的绘制…

【工具推荐】KillWxapkg v2.4(最新版) - 自动化反编译微信小程序,小程序安全评估工具

工具介绍: 纯Golang实现,一个用于自动化反编译微信小程序的工具,小程序安全利器,自动解密,解包,可还原工程目录,支持微信开发者工具运行 下载链接: 链接:https://pan.quark.cn/s/aa5480be4bd5使用说明 工程结构还原 还原前还原后微信开发者工具运行看着就真的看着,不…

Agent(智能体)和 MetaGPT,一句话实现整个需求应用代码

本文介绍了大模型 Agent 定义、组成部分,并以 MetaGPT 多智能体为例,一句话完成贪吃蛇小游戏需求,以介绍整个智能体的工作流程……前面 2 篇文章,我们使用文生文、文生图和文生音频三个大模型共同实现了图文并茂的儿童绘本故事和绘本故事音频需求:第一篇 根据主题生成儿童…

html的表单和初始js

1.表单是html常用的一类,我们平时使用的收集账号密码填写信息都是表单,标签是form,含有属性action和method,action确定表单接受数据的地址,不写默认为网页本身.method有两种收集方式,"post"和"get",其中默认方式为get,但是get对接收信息的大小有限制,post没…

秋天到了是因为要做操

为两朵花找到了属于它们的色彩;前路漫漫,我会一个人走吗。灯笼迟早会消失,会结束。 我把它献给NR吧。

2024秋软件工程作业(第一次)

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024/这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13243这个作业的目标 对软件工程这门课的作业有一个初步的了解学号 1022021471.个人logo文生图任务 使用工具:Craiyon 设计理念:中…

【工具推荐】0x7eTeamTools v1.2(最新版) -全能的渗透测试工具,一键getshell

工具介绍: 0x7eTeamTools 是一个集成了多种渗透测试功能,javafx练习,JS接口提取,漏洞检测 的工具,旨在帮助用户进行高效、全面的网络安全测试。从基本的编码转换到复杂的空间测绘和漏洞检测,这款工具提供了全方位的功能支持。 下载链接: 链接:https://pan.quark.cn/s/8c426…