订购和分拣有什么区别?

use*_*710 23 c++ tree data-structures

不,这不是一个类的问题,我正在研究树和堆(部分排序的二叉树),我想知道如何正确定义这两个与通用数据结构相关的属性/动作.

cHa*_*Hao 17

  • " 排序 "基本上是一组规则,用于确定在其他项目之前或之后的项目.IE:如果对它们进行排序,则相对订单项会出现.对于强制执行排序的集合,该排序通常根据比较运算符(特别是<),接口(Java Comparable<T>),或比较回调和/或函数对象(如C++ std::less)来指定.

    还有一些描述为" 有序集合 "的集合.这个词的使用略有不同,但相关的含义.这意味着该集合代表一系列项目,因此具有一些内置的订单概念.(与哈希表对比.你在哈希表中添加一些内容,如果你迭代内容,你就不知道它会出现在哪里.你知道有序集合.)列表,向量,数组等是典型的有序收藏品.但是,对于非列表示例,PHP的"数组"类型实际上是"有序映射" - 一种保留键顺序的字典类型.键出现在它们首次插入的顺序(或您上次使用它们的顺序)ksort() 迭代数组时,等等).

  • " 排序 "是根据给定排序实际排列项目序列的过程.它通常只对有序的集合进行...因为将一个项目置于另一个项目之前没有多大意义,这个容器没有"之前"的概念,或者不会让您首先重新排列项目.(像集合和堆这样的结构也可以使用排序,添加和删除条目会根据排序改变基础树.有人可能会争辩说它们正在逐步"排序".但这个词通常用于表示一个操作,是否一次重新安排.)


Stu*_*etz 16

非常粗略地说,一个排序指定了哪些元素应该在某个序列中的其他元素之前排序.排序是将这些元素的集合放入排序指定的顺序的过程.

(稍微容易混淆的是,也可以谈论"排序"一系列元素,这意味着将它们排序为由排序指定的某个顺序.)


更新:

在实现方面,一个很好的例子是标准容器(例如map,http://en.cppreference.com/w/cpp/container/map),它采用额外的模板参数来提供排序.默认为std::less<Key>map的情况.如果您想要自己的排序,则在创建地图时使用不同的比较器类型,而不是使用它.提供自己的比较器的常用方法是实现一个具有的比较小的结构bool operator()(const Key& lhs, const Key& rhs) const.

  • 是的,排序意味着一个谓词.谓词定义了排序.如果您没有订购,那么您无法排序.通常,暗示是谓词; 当您对整数进行排序时,根据项目的值,排序几乎总是数字.因为它暗示,我们有时会忘记它,它可能是不同的.(也许我们希望按照英文拼写的字母顺序排序.) (3认同)

Nen*_*vic 12

IBM对已排序和有序集进行了区分:

集可以是排序的或有序的:

此外,国家信息保障伙伴关系在2002年向国家标准与技术研究所提出了对条款的解释:

问题:

"排序"和"排序"这两个术语有什么区别?有时这些单词可以互换使用.

声明

尽管术语"排序"和"排序"有时在IT系统讨论中可互换使用,但它们的含义有所不同.当一个人分类时,一个人将项目分成不同的种类或类别; 当一个订单时,一个按特定顺序排列项目.

  • "在开发这种解释时,咨询了牛津英语词典.其中找到的适用定义如下:SORT:根据种类或质量,或在某些已确定的订单或系统之后安排(事物等);分离和订购:按顺序排列或保持秩序的行为:依次按顺序,重要性,资历,规模,职位,日期,亲和力等顺序排列或按顺序排列. (2认同)