关于各种排序方式

对于STL实现的sort: int, double, string自定义排序顺序和结构体需要自定义cmp

其中sort(首元素地址, 尾元素后面一个的位置, 自定义比较函数);

因此sort默认从0~n-1排序

自定义cmp

bool cmp(相对靠前的元素,相对靠后的元素)

因此sort是两元素之间的比较,所以只要符合两类型元素之间的比较通过结构体来a和b的不同形式来得到想要的结果

计数/桶排序: 计数器记录数字出现次数依次遍历输出

选择排序: 依次固定当前位为最大/小值,若不是则swap

for(int i = 1; i <= n - 1; ++ i)
for(int j = 1 + 1; j <= n; ++ j )

结构体使用&排序

struct kid
{
bool check;
double s;
}a[2005]; //kid q[N];//第二种 bool cmp(kid x,kid y)//结构体自定义cmp排序
{
return x.s < y.s;
}
sort(a + 1,a + n + 1, cmp);

多关键字排序: 核心是枚举相对顺序即可

排序的本质就是相对的顺序,所以即使多个限制条件,改变的也只是两个元素之间的(队伍中小x和小y之间)相对顺序

插入排序: 把当前位制造空位,最后通过移动插入合适位置

for(int i = 1; i <= n; ++ i) {
int now = a[i], j;//制造空位,通过若前面比我大则将其向后移位
//最后放入合适位置
for(int j = i - 1; j >= 1; -- j) {
if(a[j] > now) {
a[j + 1] = a[j];
}
else break;
}
a[j + 1] = now;//放入对应位置
}

冒泡排序: 会存储当前最大/小值,以确保最高位确定

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

快速排序: 通过哨兵构造左边 < 哨兵 < 右边

排序算法(cmp支持两类型相同元素之间的构造)的更多相关文章

  1. Codeforces Round #283 (Div. 2) A. Minimum Difficulty【一个数组定义困难值是两个相邻元素之间差的最大值。 给一个数组,可以去掉任意一个元素,问剩余数列的困难值的最小值是多少】

    A. Minimum Difficulty time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  2. 消除两个inline-block元素之间的间隔

    发现问题 两个inline-block元素之间的间隔.如下图 期望 消除两个inline-block元素之间的间隔. 解决方法 1.父元素字体大小设置为0 间隔的形成是非元素标签形成的 /** 方案1 ...

  3. JQ 查找 两个同辈元素之间 的同辈元素 nextUntil() 用于做一个多级菜单

    可以应用的地方,参考了淘宝的API菜单列表 我自己的应用

  4. 我们一起来排序——使用Java语言优雅地实现常用排序算法

    破阵子·春景 燕子来时新社,梨花落后清明. 池上碧苔三四点,叶底黄鹂一两声.日长飞絮轻. 巧笑同桌伙伴,上学径里逢迎. 疑怪昨宵春梦好,元是今朝Offer拿.笑从双脸生. 排序算法--最基础的算法,互 ...

  5. 各种排序算法及其java程序实现

    各种排序算法:冒择路(入)兮(稀)快归堆,桶式排序,基数排序 冒泡排序,选择排序,插入排序,稀尔排序,快速排序,归并排序,堆排序,桶式排序,基数排序 一.冒泡排序(BubbleSort)1. 基本思想 ...

  6. 八大排序算法Java实现

    本文对常见的排序算法进行了总结. 常见排序算法如下: 直接插入排序 希尔排序 简单选择排序 堆排序 冒泡排序 快速排序 归并排序 基数排序 它们都属于内部排序,也就是只考虑数据量较小仅需要使用内存的排 ...

  7. 排序算法及其java实现

    各种排序算法:冒择路(入)兮(稀)快归堆,桶式排序,基数排序 冒泡排序,选择排序,插入排序,稀尔排序,快速排序,归并排序,堆排序,桶式排序,基数排序 一.冒泡排序(BubbleSort) 1. 基本思 ...

  8. 八大排序算法总结与java实现(转)

    八大排序算法总结与Java实现 原文链接: 八大排序算法总结与java实现 - iTimeTraveler 概述 直接插入排序 希尔排序 简单选择排序 堆排序 冒泡排序 快速排序 归并排序 基数排序 ...

  9. 排序算法大汇总 Java实现

    一.插入类算法 排序算法的稳定性:两个大小相等的元素排序前后的相对位置不变.{31,32,2} 排序后{2,31,32},则称排序算法稳定 通用类: public class Common { pub ...

  10. Java排序--排序算法(内排序)

    常用内排序算法 我们通常所说的排序算法往往指的是内部排序算法,即需要排序的数据在计算机内存中完成整个排序的过程,当数据率超大或排序较为繁琐时常借助于计算机的硬盘对大数据进行排序工作,称之为外部排序算法 ...

随机推荐

  1. K8s 部署一套 MySQL 集群

    一般情况下 Kubernetes 可以通过 ReplicaSet 以一个 Pod 模板创建多个 pod 副本,但是它们都是无状态的,任何时候它们都可以被一个全新的 pod 替换.然而有状态的 pod ...

  2. 用 Tarjan 算法求解有向图的强连通分量

    图论中的连通性概念是许多算法与应用的基础.当我们研究网络结构.依赖关系或路径问题时,理解图中的连通性质至关重要.对于不同类型的图,连通性有着不同的表现形式和算法解决方案. 无向图与有向图的连通性 在无 ...

  3. 自荐:开源截图工具ScreenCapture:超多控制指令,支持截长图

    特性 跨屏幕截图.滚动截图(截长图).高分屏支持.窗口区域高亮. 取景框,快捷键复制 RGB 颜色(Ctrl+R). HEX 颜色(Ctrl+H)与 CMYK 颜色(Ctrl+K). 绘制填充.非填充 ...

  4. Time Series in pandas

    Time Series import pandas as pd import numpy as np Date and Time data types and tools from datetime ...

  5. Qt图像处理技术七:轮廓提取

    Qt图像处理技术七:轮廓提取 效果图 原理 图像先二值化让rgb数值相同,只有(0,0,0)或者(255,255,255) 取每个点的周围8个点,如果周围8个点与该点rgb值相同,则需要将该点描黑为( ...

  6. CF1992E Novice's Mistake

    CF1992E Novice's Mistake 同步于个人博客. Problem Noobish_Monk 有 \(n\in [1,100]\) 个朋友.每个朋友都给了他 \(a\in [1,100 ...

  7. 阿里云javascript分片上传失败的解决办法

    前端项目:React + Antd mobile + 阿里云OSS Node.js SDK实现文件上传. 在电脑上运行良好,放到手机上大文件就上传失败. 打开Chrome,地址栏输入`chrome:/ ...

  8. Spring Boot 启动优化实践

    作者:vivo 互联网服务器团队- Liu Di 本文系统性分析并优化了一个Spring Boot项目启动耗时高达 280 秒的问题.通过识别瓶颈.优化分库分表加载逻辑.异步初始化耗时任务等手段,最终 ...

  9. AAAI 2025-FEI: 频率掩码嵌入推理:一种非对比学习的时间序列表示学习

    title:Frequency-Masked Embedding Inference: A Non-Contrastive Approach for Time Series Representatio ...

  10. java学习篇(一)—— CPP和Java的区别之基础概念

    一些感想 写在开头,如果你是一个坚定选择工作的研究生,在CPP和Java之间反复跳转,那么有以下几种情况,建议你选CPP: 对CPP有强大的兴趣,且组内有成熟的方向,例如:高性能计算.音频开发等方向, ...