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

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

    排序题目描述输入5个不大于10的正整数,请按照从小到大的顺序输出这5个数。输入描述输入5个正整数。输出描述从小到大顺序输出5个数。中间用空格隔开。 俄罗斯套娃(不去)题目描述本来有一个完整的俄罗斯套娃,现在被小可都拆开了,很是凌乱,现在需要你帮我按套娃的尺寸的给我(每个尺寸大小可能重复),帮我一起把套娃组装起来! 样例4 4 1 2 3输4 3 2 1#include<iostream> // 包含输入输出流头文件using namespace std; // 使用标准命名空间int main(){ // { // 根据a[i]的值循环 cout << i << " "; // 输出i,并输出一个空格 } } return 0; // 主函数返回0}3.

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

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

    ]=1 表示数字 5 出现过)空间换时间:通过 O (1) 时间复杂度完成元素查询与标记统计与筛选计数统计:通过 a[t]++ 统计数字出现次数(第三套代码)补集思想:输出未被标记的元素(第二套代码)排序输出 例如走过2 7 4 1 8,则请告诉他:3 5 6 9 10没有走过。【输入格式】输入一行,五个数字,表示已经走过的路径编号。【输出格式】输出一行,五个数字,表示没有走过的路径编号。 【输入样例】2 7 4 1 8【输出样例】3 5 6 9 10#include <iostream>using namespace std;int a[15] = {0}; // 定义标记数组,用于标记 样例输入54 1 3 2 3输出4 3 2 1#include <iostream>using namespace std;int a[105] = {0}; // 定义标记数组,用于标记1-100范围内的数字是否出现过 { // 若数组位置i为1,说明数字i出现过 cout << i << " "; // 输出该数字,用空格分隔 } } return 0;}3.

    23800编辑于 2025-07-03
  • 来自专栏刷题笔记

    【算法复习3】时间复杂度 O(n) 的排序 排序 计数排序基数排序

    对要排序的数据要求很苛刻 重点的是掌握这些排序算法的适用场景 【算法复习3】时间复杂度 O[n] 的排序 排序 计数排序基数排序 排序(Bucket sort) 时间复杂度O(n) 苛刻的数据 3.此3排序算法都不涉及元素之间的比较操作,是非基于比较的排序算法。 4.对排序数据的要求很苛刻,重点掌握此3排序算法的适用场景。 2)数据在各个之间分布是均匀的。 3.适用场景 1)排序比较适合用在外部排序中。 2)外部排序就是数据存储在外部磁盘且数据量大,但内存有限无法将整个数据全部加载到内存中。 3)注意点:若单个文件无法全部载入内存,则针对该文件继续按照前面的思路进行处理即可。 三、计数排序(Counting sort) 1.算法原理 1)计数其实就是排序的一种特殊情况。 2)当要排序的n个数据所处范围并不大时,比如最大值为k,则分成k个 3)每个内的数据值都是相同的,就省掉了排序的时间。

    2.9K10发布于 2021-04-14
  • 来自专栏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(start,end,cmp) 参数: (1)start表示要排序数组的起始地址; (2)end表示数组结束地址的下一位; (3)cmp用于规定排序的方法,可不填,默认升序。 也包含在头文件为#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
  • Deskflow 局域网共享鼠标键盘(New)

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

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

    【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
  • 来自专栏全栈程序员必看

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

    1~3,直到排序完成。 排序的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的里,每个再分别排序(有可能再使用别的排序算法或是以递归方式继续使用排序进行排)。 算法描述 1.设置一个定量的数组当作空桶; 2.遍历输入数据,并且把数据一个一个放到对应的里去; 3.对每个不是空的进行排序; 4.从不是空的里把排好序的数据拼接起来。 图示算法 在中的元素分布: 然后,元素在每个排序: 关于排序的动态图,可以点击这里。 非比较类排序算法总结 这三种排序算法都利用了的概念,但对的使用方法上有明显差异: 基数排序:根据键值的每位数字来分配; 计数排序:每个只存储单一键值; 排序:每个存储一定范围的数值。

    1.3K21编辑于 2022-09-15
  • 来自专栏蛮三刀的后端开发专栏

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

    如果为每个所有可能的值分配1个bit,32bit的int所有可能取值需要内存空间为: 232bit=229Byte=512MB 但对于海量的、取值分布很均匀的集合进行去,Bitmap极大地压缩了所需要的内存空间 Filter 如果说Bitmap对于每一个可能的整型值,通过直接寻址的方式进行映射,相当于使用了一个哈希函数,那布隆过滤器就是引入了k(k>1)个相互独立的哈希函数,保证在给定的空间、误判率下,完成元素判的过程 下图中是k=3时的布隆过滤器。 ? 那么布隆过滤器的误差有多少?我们假设所有哈希函数散列足够均匀,散列后落到Bitmap每个位置的概率均等。 ? 方案3:在前面的题中,我们已经提到了,用一个含100个元素的最小堆完成。复杂度为O(100wlg100)。 红黑树 平衡二叉树,广泛用在c++的stl中。如map和set都是用红黑树实现的。 b/b+树 用在磁盘文件组织 数据索引和数据库索引。

    57020发布于 2019-03-26
  • 来自专栏前端ACE

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

    1.2 动图演示 1.3 代码实现 C/C++实现: //冒泡排序 void bubble_sort(int a[], int n) {//n为a[]的实际长度-1,例如a[4]={3,2,9,10 2.2 动图演示 2.3 代码实现 C/C++实现: //选择排序 void selection_sort (int a[], int n) {//n为a[]的实际长度-1,例如a[4]={3,2,9,10 3.2 动图演示 3.2 代码实现 C/C++ 实现 //插入排序 void insertion_sort (int a[], int n) {//n为a[]的实际长度-1,例如a[4]={3,2,9,10 4.2 动图演示 4.3 代码实现      C/C++ 实现: //希尔排序 void shell_sort(int a[],int n){//n为a[]的实际长度-1,例如a[4]={3,2,9,10 排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的里,每个再分别排序(有可能再使用别的排序算法或是以递归方式继续使用排序进行排)。

    85620编辑于 2022-11-21
  • 来自专栏五分钟学算法

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

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

    1.6K20发布于 2018-12-25
  • 来自专栏后端技术漫谈

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

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

    66730发布于 2019-08-07
  • 来自专栏PawSQL,在线的自动化SQL优化工具!

    PawSQL 推出 Hive 专版,助力大数据团队提升SQL审核和SQL优化能力

    当你的Hive查询从3个小时降到3分钟时,会为团队节省多少算力成本? 您是否正被这些问题困扰: 场景一: 凌晨2点,数据工程师小王还在办公室调试一条跑了3小时的Hive查询... 分关联优化 检测非分字段JOIN时提示性能风险 强制关联表分数成整数倍(如32表JOIN 64表) 谓词下推 将WHERE条件提前至子查询中执行(减少JOIN数据量) 数据倾斜专项优化 COUNT (DISTINCT倾斜): 改用子查询GROUP BY去; DISTINCT倾斜: 用GROUP BY替代DISTINCT; 全局排序TOP-N: 随机分排序+窗口函数聚合; 分组聚合倾斜: 两阶段聚合 (分组字段+随机盐值); 无分组聚合倾斜: 随机分聚合+结果合并; UNION去倾斜: UNION ALL + GROUP BY替代UNION; 窗口函数倾斜: 分区字段加盐值+两阶段计算。 (分组倾斜优化) WinFuncSkewedOptimization(窗口函数倾斜优化) DistinctRewriteRule(去倾斜优化) … ️ 全生命周期覆盖 开发阶段: IDE插件实时提醒

    28810编辑于 2025-08-05
  • 来自专栏动态规划

    C++ —— set系列的使用

    set是key搜索场景的结构,map是key/value搜索场景的结构 2. set和multiset参考⽂档 - C++ Reference https://legacy.cplusplus.com /reference/set/ 3. set类的介绍 1. set的声明如下,T就是set底层关键字的类型,set是去的 2. set默认要求T⽀持⼩于⽐较,如果不⽀持或者想按⾃⼰的需求 } cout << endl; return 0; } 5. multiset和set的差异 multiset和set的使⽤基本完全类似,主要区别点在于multiset⽀持值冗余(也就是不去 ),那么insert/find/count/erase都围绕着⽀持值冗余有所差异,具体参看下⾯的样例代码理解 相比set不同的是,multiset是排序,但是不去 multiset相比 ,但是不去 multiset<int> s = { 4,2,7,2,4,8,4,5,4,9 }; auto it = s.begin(); while (it !

    24100编辑于 2024-11-19
  • 来自专栏学习

    深入剖析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
  • 来自专栏计算机视觉理论及其实现

    map/unordered_map基础用法

    3)按自定义顺序排序 通常map对传入的元素,默认是按元素中key值进行排序(即前面定义的Less<Key>),通过前面的map原型定义不难看出它同样支持按自定义的顺序进行比较排序。 //注意:不能用set来排序,因为它会去,即其会将具有相同value值的某种语言过滤掉 multiset<CountIte, compare> sortSet; CountIte " ); v.push_back("PHP" ); v.push_back("Java" ); v.push_back("PHP" ); v.push_back("C/C+ 在内部,unordered_map中的元素没有按照它们的键值或映射值的任何顺序排序,而是根据它们的散列值组织成以允许通过它们的键值直接快速访问单个元素(具有常数平均时间复杂度)。 //香蕉 :3 //西瓜 :1.5 //数量:11 //负载因子:0.454545 }2.自定义比较 struct Store { string name; string

    3.1K30编辑于 2022-09-02
  • 来自专栏全栈程序员必看

    基数排序(LSD+MSD)详解

    基数排序 分为两类: 第一类:最低位优先法,简称LSD法:先从最低位开始排序,再对次低位排序,直到对最高位排序后得到一个有序序列;具体过程如下图所示: 初始数组序列为:15,25,105,78,34,21,32,41 ,按照个位数大小依次入; 将中数依次倒出,对于同一个中的数按先进先出顺序倒出,结果为:21,41,32,34,15,25,105,78,再按十位数大小依次入; 将中数依次倒出,结果为:105,15,21,25,32,34,41,78 = 0){ for(int j = 0;j < num[i];j++){ A[c++] = t[i][j]; } } num[i] = 0; } k = k * 10; } } 第二类:最高位优先法,简称MSD法:先从最高位开始排序,再逐个对各分组按次高位进行子排序,循环直到最低位。 A[c++] = t[i][0]; }else if(num[i] > 1){ //如果中不止一个数,则另存如数组B递归 int[] B = new int[num[i]]

    2K20编辑于 2022-06-27
  • 来自专栏YashanDB技术解读

    高效查询秘诀,解码YashanDB优化器分组查询优化手段

    我们来分析下不同Hash下的影响:情况1:我们假设Hash3个,数据存放情况如下:3都被使用到,0号和1号中各存放2条记录,2号中存放了一条记录,有Hash冲突产生。 情况3:我们假设Hash有6个,数据存放情况如下:只有3被使用到,1号中存放了2条记录,3中存放了2条记录,5号中放了1条记录。 虽然分配了6个,但是只有3有数据,效果还不及5个的时候。所以在使用上,需要Hash表尽可能的既保证大小足够存放不同值,又保证值尽可能的离散分布在Hash上。 TOP2: 1,3,2,3,11 → 1,3  → 2,304 多个Distinct的分组除了分组外,如果汇聚函数中同时出现distinct操作,则需要实现每个分组内的数据再进行除操作。 针对这样的场景,数据库会实现一个额外的算法来减少除个数,通过补空加一个排序,代替分组以及每个分组内的除操作。

    42810编辑于 2025-02-18
领券