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

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

    排序题目描述输入5个不大于10的正整数,请按照从小到大的顺序输出这5个数。输入描述输入5个正整数。输出描述从小到大顺序输出5个数。中间用空格隔开。 俄罗斯套娃(不去)题目描述本来有一个完整的俄罗斯套娃,现在被小可都拆开了,很是凌乱,现在需要你帮我按套娃的尺寸的给我(每个尺寸大小可能重复),帮我一起把套娃组装起来!

    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}; // 定义标记数组,用于标记

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

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

    Python中的排序可以使用sort() 和 sorted() 方法: a = [2, 1, 4, 9, 6] a.sort() print a c = [2, 1, 4, 9, 6] d = sorted (c) print d print c [1, 2, 4, 6, 9] [1, 2, 4, 6, 9] [2, 1, 4, 9, 6] 其中,sort改变原本数组,sorted不改变,需要一个返回值。 排序的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的里,每个再分别排序(有可能再使用别的排序算法或是以递归方式继续使用排序进行排)。 图示算法 在中的元素分布: 然后,元素在每个排序: 关于排序的动态图,可以点击这里。 非比较类排序算法总结 这三种排序算法都利用了的概念,但对的使用方法上有明显差异: 基数排序:根据键值的每位数字来分配; 计数排序:每个只存储单一键值; 排序:每个存储一定范围的数值。

    1.3K21编辑于 2022-09-15
  • 来自专栏C++教程

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

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

    4.4K30编辑于 2022-04-28
  • 来自专栏学习

    【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
  • 来自专栏Java3y

    基数排序就这么简单

    一、基数排序(排序)介绍 来源360百科: 基数排序(radix sort)属于"分配式排序"(distribution sort),又称"桶子法"(bucket sort)或bin sort,顾名思义 ,它是透过键值的部份资讯,将要排序的元素分配至某些""中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法 基数排序挺简单的,下面我就来看一下基数排序的流程…. 我们有9个,将数组的数字按照数值分配中: ? 其实也是一样的: 第一趟排序将数字的个位数分配到桶子里面去,然后回收起来,此时数组元素的所有个位数都已经排好顺序了 第二趟排序将数字的十位数分别分配到桶子里面去,然后回收起来,此时数组元素的所有个位数和十位数都已经排好顺序了 前面的演示是已经知道数组元素的数据的情况下来进行存放,但是一般我们是不去理会数组内元素的值的。那如果位数很多(万位)或者都是个位数,这个条件我们怎么去处理呢?

    1.3K70发布于 2018-03-30
  • 来自专栏Michael阿明学习之路

    最大间距(排序

    解题 2.1 直接排序 2.2 排序 1. 题目 给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。 如果数组元素个数小于 2,则返回 0。 示例 1: 输入: [3,6,9,1] 输出: 3 解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。 解题 2.1 直接排序 时间复杂度不满足要求 class Solution { public: int maximumGap(vector<int>& nums) { sort(nums.begin ++i) { maxgap = max(maxgap, nums[i+1]-nums[i]); } return maxgap; } }; 2.2 排序 参考:10种C++排序算法 将数据分到数据值域相等的内(数据范围:(MAX-MIN)/(n-1)) 之间的最大值和最小值才是最大差值 每个内只需存储一个最大值和最小值即可 class Solution

    46310发布于 2021-02-19
  • 来自专栏chimchim要努力变强啊

    GROUP_CONCAT函数切换实例

    数据: table t (a,b) a b c zhang 1 10 wang 2 20 wang 3 30 guo 6 60 wang 2 30 场景一.将a进行合并,不去 MySQL: | 场景二.将a进行合并,去 MySQL: select a, group_concat(distinct b) from t group by a; MaxCompute: select a, wm_concat (distinct ',', b) as b from t group by a; |a| b | |zhang|1| |wang | 2,3| |guo | 6 | 场景三.将a进行合并且排序不去 from (select a, b from t order by a, b desc) group by a; |a| b | |zhang|1| |wang | 2,2,3| |guo | 6 | 场景四.将a进行合并且排序,去 MySQL: select a, group_concat(distinct b order by b desc) from t group by a; MaxCompute

    1.2K30编辑于 2022-11-13
  • 来自专栏程序员成长指北

    如何答一道惊艳面试官的数组去问题?

    Set去 > Object 键值对去重复 ★注意:这里只是本人测试的结果,具体情况可能与场景不同,比如排序过的数组直接去,直接使用冒泡相邻比较性能可能更好。 1 也不去 Array.filter()加 indexOf [1, "1", null, undefined, String, String, /a/, /a/] 对象不去 NaN 会被忽略掉 Object 键值对去 [1, "1", null, undefined, String, /a/, NaN] 全部去 ES6中的Set去 [1, "1", null, undefined, String, String, /a/, /a/, NaN] 对象不去 NaN 去 内存考虑(去重复过程中,是想要空间复杂度最低吗?) 参考文章 MDN中一些函数讲解 深入分析数组去 JavaScript专题之数组去 排序算法学习总结

    1.5K40发布于 2019-12-27
  • 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
  • 来自专栏Python与算法之美

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

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

    1.6K12编辑于 2025-07-30
  • 来自专栏Java

    数据结构与算法面试:基于比较的排序算法时间复杂度最坏情况下是 O(nlogn),请问有没有更快的算法?(提示:计数排序、基数排序

    基数排序的实现思路如下: 用一个数组来记录每个可能的数字出现的次数(这里假设数值范围在0~9之间)。 将原始数组a依次按照个位、十位、百位、千位…进行排序。 对于某个"当前位数"可以采用计数排序或者排序的方式,在该轮排序后,原始数组a已经被排好序了。 下面是使用C++实现基数排序的代码,并附带详细注释: #include <iostream> #include <vector> using namespace std; void radix_sort j < n; ++j) { a[j] = bucket[j]; } } } int main() { vector<int> a = {7, 6, ; } } } public static void main(String[] args) { int[] a = {7, 6,

    39600编辑于 2025-01-21
  • 来自专栏全栈程序员必看

    Java数据结构与算法(排序)——基数排序(LSD)

    一、基本思想 最低位优先法,LSD(Least significant digital)—— 先从最低位开始排序,再对次低位排序,直到对最高位排序后得到一个有序序列(位数不同时高位补 0)。 排序过程如下: (1)先根据个位进行排序,得到: 0—— 1——81 2——22 3——73,93,43 4——14 5——55,65 6—— 7—— 8——28 9——39 ( 再根据十位进行排序,得到: 0—— 1——14 2——22,28 3——39 4——43 5——55 6——65 7——73 8——81 9——93 (3)将按十位排序的结果整理得到新数列 0~9共十位,创建十个; int[] num = new int[10];// 记录每个中存入数的个数 while(k < d){ // 按位存入中:k = 1时,按个位;k = = 0){ for (int j = 0; j < num[i]; j++) { array[c++] = t[i][j]; } } num[i

    60910编辑于 2022-08-23
  • 来自专栏跳跳爸的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词范围内,所以必须要全部词元匹配,显然上面的分词结果符合要求 的统计结果再得到最终的top10结果,可能这里大家有点绕晕了,简单画个图: 假设索引有3个分片,进行一个top5统计,目的是找出值相同的记录(大多数记录值都是唯一的),如果碰巧相同值的记录分散在不同的shard且排序靠后 ,那么很可能连单shard的top5都进不去,最终结果中看不到预期的L值也很自然了。 之所以修改gt条件可以将预期结果召回,主要也是因为数据范围缩小,使得L值有机会进去shard的top5而已。

    44520编辑于 2022-01-18
  • 来自专栏动态规划

    C++ —— set系列的使用

    set是key搜索场景的结构,map是key/value搜索场景的结构 2. set和multiset参考⽂档 - C++ Reference https://legacy.cplusplus.com } cout << endl; } return 0; } 迭代器删除 //删除 int main() { set<int> s; s.insert({ 2,4,5,2,6,8,10,15 } 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
  • 来自专栏小道

    Hive_

    但是排序只能是升序排序,不能指定排序规则为ASC或者DESC。 在生产环境中Order By用的比较少,容易导致OOM。在生产环境中Sort By + Distrbute By用的多。 12)collect_list列出该字段所有的值,不去 select collect_list(id) from table。 – ORDER BY 子句用于指定窗口排序规则,即按照哪些列进行排序,以及是升序还是降序排列。   – ROWS 和 RANGE 子句用于指定窗口的行或范围大小,从而定义窗口大小。 效率较union all差   2)union all不会对结果集去,所以效率高 14 null在hive底层如何存储? collect——list不去 from( select name,concat(sex,",",age) message from User ) t1 group by t1.message

    83920编辑于 2023-10-17
  • 来自专栏蛮三刀的后端开发专栏

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

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

    57020发布于 2019-03-26
领券