精华内容
下载资源
问答
  • 线性排序:如何根据年龄100万用户数据排序? 1、桶排序 核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排完序之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的...

    线性排序:如何根据年龄给100万用户数据排序?

    1、桶排序

    核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排完序之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的了。
    在这里插入图片描述

    2、计数排序

    计数排序其实是桶排序的一种特殊情况

    当要排序的 n 个数据,所处的范围并不大的时候,比如最大值是 k,我们就可以把数据划分成 k 个桶。每个桶内的数据值都是相同的,省掉了桶内排序的时间。

    假设只有 8 个考生,分数在 0 到 5 分之间。这 8 个考生的成绩我们放在一个数组 A[8]中,它们分别是:2,5,3,0,2,3,0,3。

    考生的成绩从 0 到 5 分,我们使用大小为 6 的数组 C[6]表示桶,其中下标对应分数。不过,C[6]内存储的并不是考生,而是对应的考生个数。像我刚刚举的那个例子,我们只需要遍历一遍考生分数,就可以得到 C[6]的值。
    在这里插入图片描述
    在这里插入图片描述
    我们从后到前依次扫描数组 A。比如,当扫描到 3 时,我们可以从数组 C 中取出下标为 3 的值 7,也就是说,到目前为止,包括自己在内,分数小于等于 3 的考生有 7 个,也就是说 3 是数组 R 中的第 7 个元素(也就是数组 R 中下标为 6 的位置)。当 3 放入到数组 R 中后,小于等于 3 的元素就只剩下了 6 个了,所以相应的 C[3]要减 1,变成 6。

    以此类推,当我们扫描到第 2 个分数为 3 的考生的时候,就会把它放入数组 R 中的第 6 个元素的位置(也就是下标为 5 的位置)。当我们扫描完整个数组 A 后,数组 R 内的数据就是按照分数从小到大有序排列的了。
    在这里插入图片描述

    3、基数排序

    基数排序对要排序的数据是有要求的,需要可以分割出独立的“位”来比较,而且位之间有递进的关系,如果 a 数据的高位比 b 数据大,那剩下的低位就不用比较了。除此之外,每一位的数据范围不能太大,要可以用线性排序算法来排序,否则,基数排序的时间复杂度就无法做到 O(n) 了。

    4、如何根据年龄给 100 万用户排序?

    我们假设年龄的范围最小 1 岁,最大不超过 120 岁。我们可以遍历这 100 万用户,根据年龄将其划分到这 120 个桶里,然后依次顺序遍历这 120 个桶中的元素。这样就得到了按照年龄排序的 100 万用户数据。

    展开全文
  • 本文总结excel自带排序函数,以及对排序函数进行扩展,使其能在相同数据排序时也能有顺序区分。一、排序函数总结excel有三个排序函数,分别是rank.avg,rank.eq和rank,rank.eq和rank作用相同,我们能从excel...

    本文总结excel自带的排序函数,以及对排序函数进行扩展,使其能在相同数据排序时也能有顺序的区分。

    一、排序函数总结

    excel有三个排序函数,分别是rank.avg,rank.eq和rank,rank.eq和rank作用相同,我们能从excel的函数提示中看出来,rank是为了兼容老版本才留下的函数,所以效果不同的排序函数是两个,rank.avg和rank.eq。

    当排序数据中不存在相同数字时,这两个函数作用完全相同,只有在有相同数据的时候才会有差异,rank.avg显示所有相同数据的平均排名,rank.eq显示所有相同数据的最佳排名:

    a4f5cd14526ac9fe6be2b7e3504c04e3.png

    上图是三个排序函数的作用区别,三个111本来应该拍5,6,7三个位置,用rank.avg排序显示的是5,6,7三个数据的平均值,就是6,用rank.eq显示的是5,6,7三个数据里面最小的排序,就是5,而rank和rank.eq显示相同。

    此时删除最后一行后,能看到rank.eq和rank的结果没有变化,而rank.avg的结果变成了5和6的平均值5.5。

    25af02873898cf64bc007e7b55150507.png

    顺便提一句,excel的排序函数是默认降序排列的(也就是最后一个可选参数为0),如果需要升序,需要将排序函数最后一个可选参数改为1。

    二、让排序函数“正确”排序

    从上面介绍我们能看出来,excel的排序函数缺一个功能,就是让所有相同数据按出现的先后顺序排,比如第一张图中三个111,第一个显示5,第二个显示6,第三个显示7。

    而计算数字是一组数字中出现的第几个,用到的函数是countif,所以rank和countif函数组合可以实现上述效果:

    9e88d331bf75bb70130a3209ac8e7c00.png

    如上图所示,先求出当前数据在第一个数据到当前数据中出现了几次,如果是第一次出现,那就直接用rank.eq函数返回最佳(最小)排序。

    如果不是第一次出现,比如是第二次出现,那说明第一个数据到当前数据之间有一个相同的数,那当前数据需要在最佳(最小)排序的基础上+1,因为当前数据是第二次出现,用countif函数算出的结果是2,所以需要用rank.eq函数的结果,加上countif函数的结果,减去1,得到顺延的排序。

    展开全文
  • 之前写过一篇海量数据中统计ip出现次数最多的博客,今天再写篇类似的,当然会有不同的地方,相同的地方我快速写过,详细的可以看之前的博客。 今天要100亿个数字排序,100亿个 int 型数字放在文件里面大概有 37.2...

    场景

    之前写过一篇海量数据中统计ip出现次数最多的博客,今天再写篇类似的,当然会有不同的地方,相同的地方我快速写过,详细的可以看之前的博客

    今天要给100亿个数字排序,100亿个 int 型数字放在文件里面大概有 37.2GB,非常大,内存一次装不下了。那么肯定是要拆分成小的文件一个一个来处理,最终在合并成一个排好序的大文件。

    实现思路

    1.把这个37GB的大文件,用哈希分成1000个小文件,每个小文件平均38MB左右(理想情况),把100亿个数字对1000取模,模出来的结果在0到999之间,每个结果对应一个文件,所以我这里取的哈希函数是 h = x % 1000,哈希函数取得"好",能使冲突减小,结果分布均匀。

    2.拆分完了之后,得到一些几十MB的小文件,那么就可以放进内存里排序了,可以用快速排序,归并排序,堆排序等等。

    3.1000个小文件内部排好序之后,就要把这些内部有序的小文件,合并成一个大的文件,可以用二叉堆来做1000路合并的操作,每个小文件是一路,合并后的大文件仍然有序。

    • 首先遍历1000个文件,每个文件里面取第一个数字,组成 (数字, 文件号) 这样的组合加入到堆里(假设是从小到大排序,用小顶堆),遍历完后堆里有1000个 (数字,文件号) 这样的元素
    • 然后不断从堆顶拿元素出来,每拿出一个元素,把它的文件号读取出来,然后去对应的文件里,加一个元素进入堆,直到那个文件被读取完。拿出来的元素当然追加到最终结果的文件里。
    • 按照上面的操作,直到堆被取空了,此时最终结果文件里的全部数字就是有序的了。

    最后我用c++写了个实验程序,具体代码在这里可以看到。

    思维拓展

    类似的100亿个数字求和,求中位数,求平均数,套路就是一样的了。
    求和:统计每个小文件的和,返回给master再求和就可以了。
    求平均数:上面能求和了,再除以100亿就是平均数了
    求中位数:在排序的基础上,遍历到中间的那个数就是中位数了。


    更正,评论中网友马敬v,提出了不用对数字进行哈希,直接平均分成1000份,进行内部排序后,直接进行 k 路归并排序,也是可以的。


    展开全文
  • 1、如下图是某村村民信息表,现在想要同一户主项填充相同的户序号。 2、全选B2:D14单元格区域,右击鼠标选择【排序】,点击【升序】(此步骤适合高版本excel,低版本可以点击数据选择排序然后按照户主进行升序排序...

    步骤:

    1、如下图是某村村民信息表,现在想要同一户主项填充相同的户序号。
    在这里插入图片描述
    2、全选B2:D14单元格区域,右击鼠标选择【排序】,点击【升序】(此步骤适合高版本excel,低版本可以点击数据选择排序然后按照户主进行升序排序)
    在这里插入图片描述
    3、在A2单元格输入数值1
    在这里插入图片描述
    4、在A3单元格输入公式=IF((COUNTIF($B$2:B3,B3)=1),A2+1,A2)
    在这里插入图片描述
    5、将A3单元格公式下拉填充到底即可完成序号填充
    在这里插入图片描述
    6、下面跟大家简单分析一下这个个公式,首先是COUNTIF函数,它是excel中一个常见的统计函数,它可以统计满足某个条件的单元格的数量。语法结构为:countif(range,criteria)
    在这里插入图片描述

    7、在单元格中输入公式=COUNTIF($B$2:B3,B3),结果如下图所示,从图中我们可以发现当结果为1时,是该户主姓名第一次出现的时候。
    在这里插入图片描述
    8、因此最后我们使用if函数进行判断,当countif结果为1,则返回上一单元格数值加1,否则返回上一单元格序号。
    在这里插入图片描述

    来源:百度经验。如有侵权请联系我!

    展开全文
  • Java中HashMap是一种用于存储“键”和“值”信息对的数据结构。不同于Array、ArrayList和LinkedLists,它不会维持插入元素的顺序。因此,在键或值的基础上排序HashMap是一个很难的面试问题,如果你不知道如何解决的...
  • 之前写过一篇海量数据中统计ip出现次数最多的博客,今天再写篇类似的,当然会有不同的地方,相同的地方我快速写过,详细的可以看之前的博客。 今天要100亿个数字排序,100亿个 int 型数字放在文件里面大概有 37.2...
  • 本文的所有SQL都是基于下表进行操作的学生信息表在SQL中,一般需要用到排序,例如将上表的数据按照年龄或身高升序进行排序,即全局排序;或将年龄相同的记录按照降序排序,即局部排序。一. 全局排序全局排序通过...
  • 如何给磁盘文件排序问题描述:输入:一个最多含有n个不相同的正整数的文件,其中每个数都小于等于n,且n=10^7。输出:得到按从小到大升序排列的包含所有输入的整数的列表。条件:最多有大约1MB的内存空间可用,但...
  • 我们经常都会使用Excel来进行数据的整理,在需要对数据进行排序的时候有时候会出现【若要执行此操作,所有合并单元格需大小相同提示,下面就为大家介绍一下出现所有合并单元格大小必须相同提示该如何解决。...
  • LeetCode 100相同的树&101对称二叉树 LeetCode 102二叉树的层序遍历&103二叉树锯齿形遍历&104二叉树的最大深度 前言 在面试的过程中,我们经常会遇到一些数据结构相关的问题,很多经典问题百问不烂。而...
  • 问题解析:如何解决当首要排序列遇到相同值时,依次要排序列进行排序?(例如,当依销量排序时,遇到相同销量,而你想在销量相同时依展示维度进行排序,怎么做?) DEMO数据如下: 由上数据我们可以看出来...
  • 怎么Excel中一列数据根据数据大小添加序号,并且不改变原来的排序rank 排名就可以在excel中怎样自动生成一列序号1,2,3,4,5,.....1、首先打开需要操Excel表格,在下图所示表格A3、A4单中输入,1和2。...
  • 题目: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出...  将读入的数据分为几乎数量相同的两部分,一部分数字小,另一部分大
  • ``` #include using namespace std;...我未按照题目要求,只是出了特定扑克牌进行算法可行性验证,如第三组数据所示,该程序应输出48. 现在问题是不知如何进行条件判断。悉心向各位请教
  • 如何得到一个数据流中中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数平均值。 思路: 我们...
  • 另一方面,数据类型提供相同的信息,并且知道如何实现这些值(例如数组)。 好处是您可以使用ADT来存储数据,而不必担心其特定实现,而只需调用其方法即可(抽象)。 堆栈 s列 清单 哈希表 树木(递归) 堆(递归...
  • 今天博主主要是从如何使用MATLAB实现最小二乘法,首先出今天重点使用两个函数。 p=polyfit(x,y,n):最小二乘法计算拟合多项式系数。x,y为拟合数据向量,要求维度相同,n为拟合多项式次数。返回p向量保存...
  • 数组是C++语言重要的数据结构,对它的一些基本操作要熟练掌握。那么,今天我们就来讨论,怎么去除数组中重复的数字? 案例 题目描述 你N个数(n),每个数都在(0~1000)之间,其中由很多重复的数字,请将重复的...
  • 海量数据处理

    2021-03-31 12:53:37
    与上题条件相同如何找到top KIP? 那么,我们能想到方法首先有我们可以通过暴力遍历方式,取一个ip地址,遍历文件检测该ip地址出现次数 对文件中ip地址进行排序,遍历一遍文件就可以统计出所有ip...
  • 实际分析场景中,当我们完成堆叠柱形图时,Tableau 通常会默认:按照相同的颜色顺序堆叠每个柱形(如下图)。 然而,这样的呈现方式,有时候会影响我们了解每一个柱形中、不同类别的销售额大小情况。 因此,有数据...
  • C语言入门(7)------排序

    2018-03-30 16:25:24
    答:数组是内存中一段连续的存储空间,作用是用于存放一组相同类型的数据通过什么来访问数组中的元素?答:必须通过下标来访问数组中的元素,数组的下标从0开始,而且必须连续如何定义数组?答:语法有三种: 第一种: 先声明...
  • 接下来,我想从tkinter.Listbox小部件中提取相同的列表.在4种不同的方法中,我只设法让第4种方法(即e4)起作用.如何使e1,e2和e3方法起作用?最终目标是获取最初提供tkinter.Listbox小部件的相同列表.测试脚本:import...
  • 1、修正一个Float类型数据排序问题,老版本把Float当String排序了。 2、增加一个锁定合计栏不参与排序功能 调用方法参考"使用实例_1.htm" Add by ddgboy in 20090428 QQ:7785526 ----------------------------...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 239
精华内容 95
关键字:

如何给相同的数据排序