精华内容
下载资源
问答
  • 怎么对部分数据进行排序
    千次阅读
    2017-12-27 14:35:51

    对于给数据排序的问题,首先要考虑的是数据有什么样的特征?


    有没有可能包含有大量的重复的元素?

      如果有这种可能的话,三路快排是最好的选择。


    是否大部分数据距离它的正确的位置很近?是否近乎有序?

      如果这样,插入排序是很好的选择。


    是否数据取值的范围非常有限?比如对学生的成绩排序。

      如果这样,计数排序是很好的选择


    对排序有什么额外的要求?

      是否需要稳定的排序?

      如果是的话,归并排序是更好的选择,快排就不行了。


    数据的存储状况是怎样的?

      是否是使用链表存储的?

      如果是的话,归并排序是更好的选择,快排就不行了。


    数据的大小是否可以装载在内存里?

      如果数据量很大,或者内存很小,不足以装载在内存里,需要使用外排序算法。

      

    正确回答一个算法问题,包含对问题的独到见解;优化;代码规范;容错性;等等



    更多相关内容
  • Excel数据进行排序数据分析不可缺少的组成部分。您可能需要执行以下操作:将名称列表按字母顺序排列;按从高到低的顺序编制产品存货水平列表,按颜色或图标进行排序对数据进行排序有助于快速直观地显示数据...

    对Excel数据进行排序是数据分析不可缺少的组成部分。您可能需要执行以下操作:将名称列表按字母顺序排列;按从高到低的顺序编制产品存货水平列表,按颜色或图标对行进行排序。对数据进行排序有助于快速直观地显示数据并更好地理解数据,有助于组织并查找所需数据,有助于最终做出更有效的决策。

    注释 若要查找某个单元格区域或某个表中的上限或下限值(如前 10 名或后 5 个销售额),可以使用自动筛选或条件格式。

    了解排序

    可以对一列或多列中的数据按文本(升序或降序)、数字(升序或降序)以及日期和时间(升序或降序)进行排序。还可以按自定义序列(如大、中和小)或格式(包括单元格颜色、字体颜色或图标集)进行排序。大多数排序操作都是针对列进行的,但是,也可以针对行进行。

    排序条件随工作簿一起保存,这样,每当打开工作簿时,都会对 Excel 表(而不是单元格区域)重新应用排序。如果希望保存排序条件,以便在打开工作簿时可以定期重新应用排序,最好使用表。这对于多列排序或花费很长时间创建的排序尤其重要。

    对文本进行排序

    1、选择单元格区域中的一列字母数字数据,或者确保活动单元格在包含字母数字数据的表列中。

    2、在“开始”选项卡上的“编辑”组中,单击“排序和筛选”。

    3、请执行下列操作之一:

    ·若要按字母数字的升序排序,请单击“从 A 到 Z 排序”。

    ·若要按字母数字的降序排序,请单击“从 Z 到 A 排序”。

    4、可以执行区分大小写的排序(可选)。

    1033122366.jpg如何执行区分大小写的排序

    1、在“开始”选项卡上的“编辑”组中,单击“排序和筛选”,然后单击“自定义排序”。

    2、在“排序”对话框中,单击“选项”。

    3、在“排序选项”对话框中,选择“区分大小写”。

    4、单击“确定”两次。

    问题:检查所有数据是否存储为文本 如果要排序的列中包含的数字既有作为数字存储的,又有作为文本存储的,则需要将所有数字均设置为文本格式;否则,作为数字存储的数字将排在作为文本存储的数字前面。要将选定的所有数据设置为文本格式,请在“开始”选项卡上的“字体”组中,单击“设置单元格字体格式”按钮,单击“数字”选项卡,然后在“分类”下,单击“文本”。

    问题:删除所有前导空格 在有些情况下,从其他应用程序导入的数据前面可能会有前导空格。请在排序前先删除这些前导空格。

    展开全文
  • 春招的时候在某养猪场面试,面试官问了一个问题:“如何用256M内存的机器一个2G的数据进行排序”。之前没看过这方面的内容,想了一下说用归并排序,然后简略的说了一下我的想法。现在再来看书里关于外部排序的内容...

    春招的时候在某养猪场面试,面试官问了一个问题:“如何用256M内存的机器对一个2G的数据进行排序”。之前没看过这方面的内容,想了一下说用归并排序,然后简略的说了一下我的想法。现在再来看书里关于外部排序的内容,当时的大方向没错,但是剩下的具体实现、外部空间复杂度计算、时间复杂度计算和优化等都没考虑到位。

    因为计算机的外部访问是非常慢的(相对比从内存读数据),如果使用和“把数据全部读入内存然后排序”相同的算法,再加上外部存储例如磁带是只能顺序访问,那么任何算法都需要(N^2)次外部数据访问,将是非常可怕的耗时。所以需要有专门用于外部排序的算法。

    • 第一部分:介绍基于归并排序的简单算法
    • 第二部分:在简单算法的基础上让其支持多路归并可以提高效率
    • 第三部分:首先在简单算法上应用多相合并,可以节约外部存储的空间,然后扩展到多路归并上
    • 第四部分:针对用于归并的顺串进行改造,在特定的情况下可以提高算法效率。

    简单算法

    使用归并排序的思想,简单的双路归并需要四盘磁带(就是外部存储)。最初的数据在T_a1上,内存为M,就是每次可以使用排序算法对M个数据进行排序。

    1. 依次从T_a1上读入M数据,进行排序。
    2. 然后交替的输出到T_b1和T_b2上。每组排过序的记录叫做一个顺串
    3. 将 T_b1和T_b2的第一个顺串取出来将两者合并(过程参考归并算法),将结果输出到T_a1上。
    4. 继续上一个步骤,交替的输出到T_a1和T_a2上。直到T_b1或T_b2为空。如果剩下一个顺串,拷贝到适当的磁带上。
    5. 这样我们在T_a1和T_a2上得到长度为M的顺串,重复上面的过程,知道得到长度为N的顺串。

    示例:

    初始状态:

    T_a181 94 11 96 12 35 17 99 28 58 41 75 15
    T_a2 
    T_b1 
    T_b2 

    第1,第2步之后:

    T_a1   
    T_a2   
    T_b111 81 9417 28 9915
    T_b212 35 9641 58 75 

    第3,第4步之后:

    T_a111 12 35 81 94 9615
    T_a217 28 41 58 75 99 
    T_b1  
    T_b2  

    重复这个从Ta1 Ta2归并到Tb1 Tb2,从Tb1 Tb2归并到Ta1 Ta2的过程:

    T_a1 
    T_a2 
    T_b111 12 17 28 35 51 58 75 81 94 96 99
    T_b215
    T_a111 12 15 17 28 35 51 58 75 81 94 96 99
    T_a2 
    T_b1 
    T_b2 

    完成!

    我们“从Ta1 Ta2归并到Tb1 Tb2,从Tb1 Tb2归并到Ta1 Ta2”这个过程用了3趟。因为第一次顺串的长度为M,在二路归并的情况下,每次将顺串的长度延长一倍,需要次数为:

    多路合并

    上面的简单算法就是二路合并,我们将其扩展到一般状态——k路合并。

    k路合并需要2k盘磁带,每次将顺串的长度扩充为原来的k倍。在合并的时候,在k个元素中发现最小值是比二路合并复杂的地方,可以使用优先队列。多路合并和二路合并区别不大,就不举例子了。k路合并需要的趟数是:

    多相合并

    在上面的多路合并中,k-路合并需要2k盘磁带。使用多相合并后,只使用2k-1盘磁带也可以达到相同的效果,可以节省外部存储空间。下面看如何用三盘磁带完成2-路合并:

    1. T_1上有34个顺串长度的数据,可以选择排序后在T_2、T_3上分别输出17个顺串。
    2. 合并输出到T _1上,T_1上有17个顺串。
    3. 将8个顺串从T_1拷贝到T_2上,然后合并到T_3上,这时候T_3有9个顺串。(就是将T_1分成两部分,8个给T_2,9个给T_3)
    4. 每次拷贝二分之一个顺串到一个空的磁带上,然后合并到剩下的那个空的磁带上。

    可以优化一下,让每次合并完成之后天然形成两个磁带有顺串,一个为空的情景:

    1. 把T_1上的数据排序后,把21个顺串放到T_2上面,13个放到T_3上。
    2. 合并之后,T_3为空,T_1上有13个顺串,T_2上有8个顺串。
    3. 合并,T_2空,T_3上有8个顺串,T_1上有5个。重复这个过程。

    第一步分配的策略是:如果总顺串的数量是斐波那契数F_N,那么将顺串分解成F(N-1)和 F(N-2)。如果不是斐波那契数,需要用一些哑顺串(dummy run)来填补磁带。

    将上面三盘磁带完成2-路合并扩展到k-路的多相合并,顺串分解使用k阶斐波那契数列:

    5阶斐波那契数列就是:

    0,0,0,0,1,1,2,4,8,16,31,61……

    替换选择

    上面的排序算法中,第一步顺串的生成都使用了常规内存排序的方法,每次可以生成和内存容量一样大的有序数列。在替换选择算法中,无序数列平均可以生成2M长度的顺串。

    1. M个数据被读入内存,并放到一个优先队列中。执行一次DeleteMin把最小记录输出到磁带上。(优先队列,这里是构造小根堆,把堆最上面的,也就是最小的输出,输出后,优先队列长度减1。)
    2. 内存空出一个位置,在从磁带读入下一个记录,如果比刚刚输出的数据要大,放入优先队列。否则把这个新元素存入优先队列的死区(dead space)。(如果把堆看成一个一维数组,每次优先队列长度减一,也就是数组的可访问长度减1,后面访问不到的就是死区。)
    3. 重复上一个步骤,直到优先队列的大小为0,结束第一个顺串的构造。
    4. 使用死区中的所有元素建立一个新的优先队列,重复1,2,3的过程。

    替换选择在一些情况下,如果说大部分的数都是逆序的,效果并不比表标准算法好。但是,如果输入数据是大致顺序的,那么可以第一步就产生很长的顺串,减少来回归并的趟数。

    转载自简书作者,https://www.jianshu.com/p/b8faa1affe17。

     

    展开全文
  • 解决方案: 可以通过后端处理: 1、 table.render({autoSort: false}) 2、//监听排序事件 table.on('sort(datas)', function (obj) { table.reload('idTest', { in...

    解决方案:

    可以通过后端处理:

    1、     table.render({ autoSort: false})

     2、//监听排序事件 
                table.on('sort(datas)', function (obj)
                {
                    table.reload('idTest', {
                        initSort: obj //记录初始排序,如果不设的话,将无法标记表头的排序状态。
                      , where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
                          field: obj.field //排序字段
                        , order: obj.type //排序方式
                      }
                    });
                        showdatas(obj.field, obj.type)//此方法可以向后端传数据,处理排序

                  obj.field:点击的字段

                 obj.type: desc(降序)、asc(升序)

               }
                

    展开全文
  • 插入排序2.希尔排序 1. 插入排序 步骤: 1.从第一个元素开始,该元素可以认为已经被排序 2.取下一个元素tem,从已排序的元素序列从后往前扫描 3.如果该元素大于tem,则将该元素移到下一位 4.重复步骤3,直到找到已...
  • 快速排序法:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据要小,然后再按此方法这两部分数据分别进行快速排序(此过程可以用到函数递归的方法)。 #include #...
  • // 未达到size的部分数据排序后放一个文件 if (i > 0) { // 排序输出到部分文件 String filename = "F:/file_test/data1-part-" + partition++ + ".txt"; doPartitionSort(pool, filename, array, 0,...
  • 百万数据进行查询与排序

    千次阅读 2017-08-11 21:57:15
    百万数据进行查询与排序! 在网上找了一堆,有一下几大排序算法如:快速排序,归并排序,堆排序,百万数据查询 。 那什么是快速排序:  1. 快速排序算法是一种不稳定的排序算法。其时间复杂度为O(nlogn),最坏...
  • hadoop 实现数据排序

    万次阅读 多人点赞 2022-01-03 16:08:45
    hadoop 实现数据排序
  • 使用Pandas对数据进行筛选和排序

    千次阅读 2017-07-02 17:07:09
    转载:“蓝鲸网站分析博客”... 首选导入需要使用的Pandas库和numpy库,读取并创建数据表,将数据表命名为lc。 import pandas as pd import numpy as np lc=pd.DataFrame(pd.read_csv('Lo
  • Python实例:根据字典值字典进行排序的三种方法一、实际场景及解决思路二、字典排序的三种实现方法2.1 使用列表解析方法实现字典排序2.2 使用`zip`方法实现字典排序2.3 使用传递`sorted`函数的`key`参数实现字典...
  • 数据结构——八大排序算法(面试必备)

    万次阅读 多人点赞 2021-04-24 14:38:41
    交换排序——冒泡排序2. 交换排序——快速排序3. 选择排序——简单选择排序4. 选择排序——堆排序什么是堆堆排序基本思想步骤图解代码实现5. 插入排序——简单插入排序6. 插入排序——希尔排序7. 归并排序8. 基数...
  • 链表进行插入排序(C语言实现)

    千次阅读 2021-01-09 10:26:11
    链表进行插入排序。 插入排序的动画演示如下。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。 插入...
  • 位图排序是一种效率极高(复杂度可达O(n))并且很节省空间的一种排序方法,特点是用内存空间换取CPU时间。 其原理是将一个bit当作一个数字,然后遍历,设置1为存在,0为不存在,然后顺序输出即可。 例如: 有一个集合{...
  • 大数据算法:5亿数据进行排序

    万次阅读 多人点赞 2015-10-19 23:32:03
    比如说对数据排序,比如说数据统计,比如说数据计算。而在大量的数据面前,我们总是束手无策,因为我们无法在限定时间的情况下,在效率上做到让人满意,也无法在限定空间的情况下,能够快速解决问题。可能我们在...
  • json数据进行排序和搜索

    千次阅读 2017-07-23 22:53:36
    json数据进行排序和搜索在使用AJAX获取数据时后台返回的大部分都是json数据,在进行程序开发时有时会需要直接这些json数据在js程序中再进行一定的操作,如排序、搜索等,而不是通过AJAX请求由数据库进行这些操作...
  • 基础数据结构——八大排序详解

    千次阅读 多人点赞 2022-01-14 20:44:07
    1、排序的分类: 内排序排序的整个过程中,待排序的所有记录全部放在内存中 外排序:由于排序的记录个数太多,不能同时放在内存,整个排序需要在内外存之间交换数据才能进行
  • Python中字典的排序分为按“键”排序和按“值”排序那么python如何将列表中数据排序对字典排序呢?一起来了解下吧:实际应用中我们确实有这种排序的“需求”-----按照values的值“排序”输出或者按照别的奇怪的顺序...
  • 排序,是数据整理当中最常见的一个步骤,本文介绍在建模时对数据排序的方法
  • 数据结构】十大排序

    万次阅读 多人点赞 2021-08-29 07:26:56
    打开算法大门,从排序开始
  • 问题描述 百度面试题: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。 假设目前有一千万个记录(这些查询串的重复度比较高,...外部排序指的是大文件的排序...
  • 在Django 应用中,根据某字段的值检索结果排序,比如说,按字母顺序。 那么,使用 order_by() 这个方法就可以搞定了。 >>> Publisher.objects.order_by("name") [<...
  • 1、排序的概念 1、排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的...外部排序数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据
  • 数据结构-交换排序:(冒泡排序和快速排序
  • 有一个数据表格,每一列的列名(字段)是不同的日期,也就是每一列的数据是每一周的,但是原始数据日期是乱的,没有按照日期的正常顺序排列。由于数据太多,有几十列,而且每一列有上百万行数据,要是手工重新排列太...
  • ## 参数 sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', ...axis:0按照行名排序;1按照列名排序 level:默认None,否则按照给定的level顺序排列---貌似...
  • 部分内容转载自:https://www.cnblogs.com/handsomecui/p/4946151.html ... pair 默认first升序,当first相同时second升序; 类模板:template <class T1, class T2> struct...
  • 介绍使用DAX RANKX函数对数据进行排序的方法以及注意事项。
  • 默认情况下,MySQL 不会结果集中的数据进行排序。如果说我们想要针对某个字段按照一定的规律排序,可以使用 MySQL 为我们提供的 "ORDER BY" 子句来实现排序的功能;去重也是一样,虽然数据表的主键不能存在重复的...
  • 数据结构—八大排序

    万次阅读 多人点赞 2021-12-13 13:19:54
    一、直接插入排序 void InsertSort(int* a, int n) { assert(a); for (int i = 0; i < n - 1; ++i) { int end = i; int x=a[end+1];//将end后面的值保存到x里面了 //将x插入到[0,end]的有序区间 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 820,043
精华内容 328,017
热门标签
关键字:

怎么对部分数据进行排序