首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏C++信息学奥赛

    杨校老师课堂之不去排序算法——计数应用专项题单

    排序题目描述输入5个不大于10的正整数,请按照从小到大的顺序输出这5个数。输入描述输入5个正整数。输出描述从小到大顺序输出5个数。中间用空格隔开。 样例输入2 5 2 1 8输出1 2 2 5 8#include<iostream> using namespace std;int a[15] = {0};int main(){ // 主函数 int x; // 定义一个大小为15的整型数组a并初始化为0,以及一个整型变量x for(int i = 1; i <= 5; i++){ // 循环5次,从1到5 cin > 俄罗斯套娃(不去)题目描述本来有一个完整的俄罗斯套娃,现在被小可都拆开了,很是凌乱,现在需要你帮我按套娃的尺寸的给我(每个尺寸大小可能重复),帮我一起把套娃组装起来!

    19200编辑于 2025-07-03
  • 来自专栏C++信息学奥赛

    杨校老师课堂之去排序算法——标记应用专项题单

    输入输出处理连续读取多个变量:cin >> n >> t;格式化输出:cout << i << " "; 按要求输出数字或结果二、核心算法思想哈希思想(简化版)标记法:用数组下标直接映射元素值(如 a[5] =1 表示数字 5 出现过)空间换时间:通过 O (1) 时间复杂度完成元素查询与标记统计与筛选计数统计:通过 a[t]++ 统计数字出现次数(第三套代码)补集思想:输出未被标记的元素(第二套代码)排序输出 小可的探险计划【题目描述】探险家小可想要绘制某个森林的路径图,已知森林里有10条路,编号为1~10,小可需要不重复的将每条路走一遍,现在已经走了其中5条。 例如走过2 7 4 1 8,则请告诉他:3 5 6 9 10没有走过。【输入格式】输入一行,五个数字,表示已经走过的路径编号。【输出格式】输出一行,五个数字,表示没有走过的路径编号。 1-10范围内的数字是否出现过,初始全为0int main() { int t; // 标记阶段:读取5个输入数字,并在数组a中标记这些数字出现过 for (int i = 1

    23800编辑于 2025-07-03
  • 来自专栏IT从业者张某某

    C++018-C++排序及其应用

    排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的里,每个再分别排序(有可能再使用别的排序算法或是以递归方式继续使用排序进行排)。 从不是空的桶子里把项目再放回原来的序列中 排序算法中,待排序的数据量和的数量并不一定是简单的“一对一”的关系,更多场景中是“多对一”的关系, 排序应用 我们可以利用来完成去与计数的任务 解决去问题时,只需将每个数据装入中后,再根据中是否有数据( tong[i]>0),来输出对应的的编号,只输出1次而不要多次输出。 所有整数去后从低到高排序后的结果。 本文为C++排序序案例,包括相关案例练习。

    64340编辑于 2023-10-16
  • 来自专栏Triciaの小世界

    蒜头君的随机数 【C++排序与去(sort函数与unique函数)】

    然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。 请你协助蒜头君完成“去”与“排序”的工作。 输入格式 共两行,第一行为一个正整数n。 Sort函数 sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序。 sort函数进行排序的时间复杂度为n*log2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#include< algorithm>的c++标准库中。 sort类函数总结: sort 对给定区间所有元素进行排序 stable_sort 对给定区间所有元素进行稳定排序 partial_sort 对给定区间所有元素部分排序 partial_sort_copy 也包含在头文件为#include< algorithm>的c++标准库中。 一般使用前需要对容器进行排序,这样才能实现对整个数组去

    1.4K20编辑于 2023-04-12
  • 来自专栏IT从业者张某某

    算法05-排序算法

    总结 本系列为C++算法学习系列,会介绍 算法概念与描述,入门算法,基础算法,数值处理算法,排序算法,搜索算法,图论算法, 动态规划等相关内容。本文为排序部分。 从不是空的桶子里把项目再放回原来的序列中 排序算法中,待排序的数据量和的数量并不一定是简单的“一对一”的关系,更多场景中是“多对一”的关系, 排序应用 我们可以利用来完成去与计数的任务 解决去问题时,只需将每个数据装入中后,再根据中是否有数据( tong[i]>0),来输出对应的的编号,只输出1次而不要多次输出。 i=1;i<=n;i++) { int a; cin>>a; bucket[a]++; //进入相应的区域() //如果题目要求把重复的数删掉(去) 所有整数去后从低到高排序后的结果。

    60330编辑于 2023-10-16
  • 来自专栏学习

    【unordered_set和unordered_map】—— 我与C++的不解之缘(二十七)

    然后就是迭代器的不同,set的iterator是双向迭代器,而unordered_set的iterator是单向迭代器;set底层是红黑树,set的迭代器是有序+去的;而unoedered_set底层是哈希 ,unoedered_set是无序+去的。 3. unordered_map 的基本用法 unordered_map 是一个哈希表实现的键值对容器,类似于 map,但是它的元素不按键排序。 然后就是迭代器的不同,map的iterator是双向迭代器,而unordered_map的iterator是单向迭代器;map底层是红黑树,map的迭代器是有序+去的;而unoedered_map底层是哈希 ,unoedered_map是无序+去的。

    38800编辑于 2025-03-23
  • 来自专栏C++教程

    【Example】C++ 标准库常用容器全面概述

    vector 所用的方式不在每次插入元素时,而只在额外内存耗尽时分配。分配的内存总量可用 capacity() 函数查询。额外内存可通过对 shrink_to_fit() 的调用返回给系统。  (C++11 起) 分配通常是性能上有开销的操作。若元素数量已知,则 reserve() 函数可用于消除分配。 两者同样都会根据键值大小进行升序排序。 序列由哈希函数弱排序,哈希函数将此序列分区到称为存储的有序序列集中。 在每个存储中,比较函数确定任何一对元素是否具有等效的排序。 每个元素同时用作排序键和值。 哈希函数将此序列分区到称为存储的有序序列集中。 在每个存储中,比较函数将确定任一元素对是否具有等效顺序。 每个元素存储两个对象,包括一个排序键和一个值。

    4.4K30编辑于 2022-04-28
  • 来自专栏全栈程序员必看

    十大排序——最全最详细,一文让你彻底搞懂

    ,直到找到已排序的元素小于或者等于新元素的位置; 5.将新元素插入到该位置后; 6.重复步骤2~5。 Top 排序 Bucket Sort 排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。 排序的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的里,每个再分别排序(有可能再使用别的排序算法或是以递归方式继续使用排序进行排)。 图示算法 在中的元素分布: 然后,元素在每个排序: 关于排序的动态图,可以点击这里。 非比较类排序算法总结 这三种排序算法都利用了的概念,但对的使用方法上有明显差异: 基数排序:根据键值的每位数字来分配; 计数排序:每个只存储单一键值; 排序:每个存储一定范围的数值。

    1.3K21编辑于 2022-09-15
  • 来自专栏C++的逆袭之路

    C语言之——入门必刷题(3)

    (max=arr[0],只是个人习惯) ---- 二、排序应用 1.去重整数并排序  1.  / 举例: scanf("%d",&temp); // 给标号(输入5,则标号5) arr[temp]=temp; // 将5放入五号 // 所以这里我们就明白,输入n个数,即为n个标号,然后放入对应的值 } // 第一次n=5,放入5,若第二次n=5,也放入5,这样就做到了去 排序方法!!      ; //输出要查找的数字 scanf("%d",&k); //举例: printf("%d",arr[k]); //输入5,即看标号为5用了几次

    52220编辑于 2023-04-12
  • 来自专栏五分钟学算法

    【图解数据结构】 一组动画彻底理解排序

    排序 排序(Bucket sort)是一种基于计数的排序算法(计数排序可参考上节的内容),工作的原理是将数据分到有限数量的桶子里,然后每个再分别排序(有可能再使用别的排序算法或是以递回方式继续使用排序进行排序 把数据放到对应的中。 对每个不为空的中数据进行排序。 拼接不为空的中数据,得到结果。 算法演示 动画演示GIF加载有点慢,请稍等片刻^_^ ? 排序动画过程解释 首先,设置固定数量的空桶,在这里为了方便演示,设置的数量为 5 个空桶 遍历整个数列,找到最大值为 56 ,最小值为 2 ,每个的范围为 ( 56 - 2 + 1 )/ 5 = 11 ,判断中已存在的数字与新插入数字的大小,按照左到右,从小到大的顺序插入(可以使用前面讲解的插入排序)实现 比如,插入数字 19 时, 1 号中已经有数字 23 ,在这里使用插入排序,让 19 排在 这样就完成了 排序 代码实现 为了更好的让读者用自己熟悉的编程语言来理解动画,笔者将贴出多种编程语言的参考代码,代码全部来源于网上。 C++代码实现 ? Java代码实现 ?

    1.6K20发布于 2018-12-25
  • Deskflow 局域网共享鼠标键盘(New)

    开启了共享剪贴版时,截屏的内容会跨电脑传输(有可能是我们希望的),造成软件卡顿(表面上看鼠标过不去),记得随后随便复制点字符,清理掉图片。 2. 最新版可能需要最新版的Microsoft Visual C++ 环境,请去微软官方下载:https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist 服务端显示连接提示,点Add 跳出配置窗,拖动编辑电脑相对位置,拖到左上角垃圾删除(如果误删除了在用的屏幕,可能需要重启服务器端才能连)。 点击OK就可以用了。

    2.6K00编辑于 2025-07-14
  • 来自专栏学习

    深入剖析C++ STL中的set:高效管理有序数据的利器

    前言:在 C++ 标准模板库(STL)中,set是一个常用的关联容器,用于存储唯一的、自动排序的数据。它是解决去、有序存储、快速查找等问题的绝佳工具。 set 是 C++ STL 提供的一个模板类,基于红黑树实现,具有以下核心特性: 元素唯一:set 会自动去,插入相同的元素时,新元素会被忽略。 升序排序 set<int> s; // 去+降序排序(给⼀个⼤于的仿函数) //set<int, greater<int>> s; s.insert(5); s.insert(2); s.insert #include<iostream> #include<set> using namespace std; int main() { // 相⽐set不同的是,multiset是排序,但是不去 multiset set<int> s1(nums1.begin(), nums1.end()); // 将 nums2 的元素存入另一个 set,自动去排序 set

    55410编辑于 2024-11-21
  • 来自专栏蛮三刀的后端开发专栏

    海量数据处理问题知识点复习手册

    如果为每个所有可能的值分配1个bit,32bit的int所有可能取值需要内存空间为: 232bit=229Byte=512MB 但对于海量的、取值分布很均匀的集合进行去,Bitmap极大地压缩了所需要的内存空间 Filter 如果说Bitmap对于每一个可能的整型值,通过直接寻址的方式进行映射,相当于使用了一个哈希函数,那布隆过滤器就是引入了k(k>1)个相互独立的哈希函数,保证在给定的空间、误判率下,完成元素判的过程 而还有一个很有趣的地方是,实际使用的却并不是5个哈希函数。实际进行映射时,而是分别使用了一个64bit哈希函数的高、低32bit进行循环移位。 这样,我们就可以采用trie树/hash_map等直接来统计每个query出现的次数,然后按出现次数做快速/堆/归并排序就可以了 bitmap直接映射 经典例题:5 在2.5亿个整数中找出不重复的整数 红黑树 平衡二叉树,广泛用在c++的stl中。如map和set都是用红黑树实现的。 b/b+树 用在磁盘文件组织 数据索引和数据库索引。

    57020发布于 2019-03-26
  • 来自专栏动态规划

    C++ —— set系列的使用

    set是key搜索场景的结构,map是key/value搜索场景的结构 2. set和multiset参考⽂档 - C++ Reference https://legacy.cplusplus.com }); for (auto e : s) { cout << e << " "; } cout << endl; //删除最小的元素就删除排序后的首元素 s.erase(s.begin multiset和set的差异 multiset和set的使⽤基本完全类似,主要区别点在于multiset⽀持值冗余(也就是不去),那么insert/find/count/erase都围绕着⽀持值冗余有所差异 ,具体参看下⾯的样例代码理解 相比set不同的是,multiset是排序,但是不去 multiset相比set不同的是,x可能会存在多个,find查找中序的第⼀个 当在左子树找到符合的值后继续从该值的左子树寻找 ,但是不去 multiset<int> s = { 4,2,7,2,4,8,4,5,4,9 }; auto it = s.begin(); while (it !

    24100编辑于 2024-11-19
  • 一篇搞懂接口安全与性能优化:幂等、防重复提交、令牌、防抖与节流

    Redis 实现 Set 集合: 天然去,用于短期请求去 SETNX / SET NX EX: 原子操作保证同一请求只处理一次 可设置过期时间,避免锁死 应用场景:短期幂等控制 MQ 异步去消费 ① 常见 MQ 去方式 RocketMQ(≥5.x):自带消息去功能(基于唯一 keys + Broker 内存缓存) Kafka:支持幂等生产(enable.idempotence =true)避免重复写入 RabbitMQ:原生不去,可用社区 deduplication 插件(基于 message_id 或 header) 通用方案:消费端用 Redis / 数据库 后端:用 Redis 记录 用户ID+订单ID,5 秒内拒绝重复请求。 目的:防止用户短时间重复触发同一操作,减少接口压力。 5️⃣ 接口幂等性 — 确保业务结果一致 场景:你支付过程中网络闪断,刷新页面后再次提交支付请求。 做法: 每个订单有唯一 orderNo,后端判断订单状态,如果已支付,不会再次扣款。

    32010编辑于 2025-12-17
  • 来自专栏跳跳爸的Abc

    两个Elaticsearch查询问题分析

    好了,这个时候就必须看下name这个字段的分词器了: 是个单字分词,也就是18688034559分词后为[1,8,6,8,8,0,3,4,5,5,9],去后得到[0,1,3,4,5,6,8,9],而查询词 15858593403分词后为[1,5,8,5,8,5,9,3,4,0,3],去后得到[0,1,3,4,5,8,9],手机号为11位,在13词范围内,所以必须要全部词元匹配,显然上面的分词结果符合要求 ,目的是找出值相同的记录(大多数记录值都是唯一的),如果碰巧相同值的记录分散在不同的shard且排序靠后,那么很可能连单shard的top5都进不去,最终结果中看不到预期的L值也很自然了。 之所以修改gt条件可以将预期结果召回,主要也是因为数据范围缩小,使得L值有机会进去shard的top5而已。 这个操作其实在Elasticsearch的官方文档上都有写,认真看过文档的同学应该对这个都有印象,terms统计的结果不保证100%精确,如果terms统计设置的size小于数据中的唯一值数量,那么就有可能会丢失部分统计结果

    44520编辑于 2022-01-18
  • 来自专栏后端技术漫谈

    海量数据处理问题知识点复习手册

    如果为每个所有可能的值分配1个bit,32bit的int所有可能取值需要内存空间为: 2^32bit=2^29Byte=512MB 但对于海量的、取值分布很均匀的集合进行去,Bitmap极大地压缩了所需要的内存空间 Filter 如果说Bitmap对于每一个可能的整型值,通过直接寻址的方式进行映射,相当于使用了一个哈希函数,那布隆过滤器就是引入了k(k>1)个相互独立的哈希函数,保证在给定的空间、误判率下,完成元素判的过程 这样,我们就可以采用trie树/hash_map等直接来统计每个query出现的次数,然后按出现次数做快速/堆/归并排序就可以了 bitmap直接映射 经典例题:5 在2.5亿个整数中找出不重复的整数, 排序 经典例题:15 给定n个实数,求着n个实数在实轴上向量2个数之间的最大差值,要求线性的时间算法。 方案1:最先想到的方法就是先对这n个数据进行排序,然后一遍扫描即可确定相邻的最大间隙。 红黑树 平衡二叉树,广泛用在c++的stl中。如map和set都是用红黑树实现的。 b/b+树 用在磁盘文件组织 数据索引和数据库索引。

    66730发布于 2019-08-07
  • 来自专栏前端ACE

    各种常用排序算法(CC++,Java)动态显示

    ; 将新元素插入到该位置后; 重复步骤2~55、归并排序(Merge Sort) 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 9、排序(Bucket Sort) 排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。 排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的里,每个再分别排序(有可能再使用别的排序算法或是以递归方式继续使用排序进行排)。     var DEFAULT_BUCKET_SIZE = 5;           // 设置的默认数量为5     bucketSize = bucketSize || DEFAULT_BUCKET_SIZE

    85620编辑于 2022-11-21
  • 来自专栏Python与算法之美

    3小时吃掉HiveSQL:从基础语法到性能优化

    • 2,数据表分区和分的区别是什么?分有什么用? • 3,常用select查询语句的执行顺序是什么?给出join、groupby、where 和窗口函数 的执行顺序排序。 分和分区的区别: • 每个分区对应一个子目录,每个分对应一个文件。 • 分区字段不是实际的列,分字段必须是实际的列。 • 分区表的分区数量可以一直增长,而分表创建好之后的数量就固定不变了。 这与SQL中有些数据库默认的UNION(去)行为略有不同。 如果希望得到不重复的数据,通常需要在UNION ALL之后使用DISTINCT或其他去方法。 • COLLECT_LIST: 将分组中的值收集到一个列表中(不去) 可以在GROUP BY子句中使用HAVING子句来过滤分组。 -- 假设salary取值: 8w, 7w, 5w, 5w, 3w, 1w, 1w -- dense_rank取值: 1, 2, 3, 3, 4, 5, 5 SELECT emp_id

    1.6K12编辑于 2025-07-30
  • 来自专栏linux驱动个人学习

    基数排序

    时间复杂度 基数排序的时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数 排序原理 排序数字为16,21,5,49,33,456,327,56,65,234 这是我测试的实例数字,下面有源程序 ,最高位有三位(程序里max=3),所以要进行三遍排序(下图只排了两次,第三遍也一样啦),第一遍,以个位数分,个位相同放在一个里,然后把桶里的数在依次拿出来,第一次拿出,顺序为21,33,234,5 个位数是(第一遍) 0 - 1 21 2 - 3 33 4 234 5 5, 65 6 16, 456, 56 7 327 8 - 9 49 十位数是(第二遍)| 0| 5 1|16 2 |21,327 3 | 33,234 4 | 49 5 | 456,56 6 | 65 7 | - 8|- 9|- 该排序实例,是按部就班的按照来放的,但是由于在排序过程中用到的是二维数组 c++排序实例,是按部就班的按照来放的,但是由于在排序过程中用到的是二维数组,因此造成一定的资源浪费,但二维数组前一个数字表示号,后一个表示放的位置,极大的降低了理解难度,因为每个内放的个数是用

    99230发布于 2019-07-15
领券