精华内容
下载资源
问答
  • 数据结构中的有序和无序 文章开头首先感谢正在学C++博主 个人最起始的迷惑 我的迷惑来自有序列表这个名词。 在我的印象中有序数据结构是可以保留插入顺序的一种数据结构。而无序则是指在插入数据时进行了排序、...

    数据结构中的有序和无序

    文章开头首先感谢正在学C++博主

    个人最起始的迷惑

    我的迷惑来自有序列表这个名词。

    在我的印象中有序的数据结构是可以保留插入顺序的一种数据结构。而无序则是指在插入数据时进行了排序、去重等操作的数据结构。

    正是因为这个迷惑让我开始了对于有序和无序的思考。

    以Python的list和JavaScript的Array为例来说,以下的数据是有序还是无序

    # py
    arr = [1,3]
    arr.append(2)
    print(arr) #[1,3,2]
    
    // JavaScript
    let arr = [1,3];
    arr.push(2);
    console.log(arr); // [1,3,2]
    

    下面是疑惑点

    • 如果说上面的是有序的,则可以认为是下标拥有排列顺序
    • 如果说上面的是无序的,则可以认为是值无排列顺序,所以是无序的

    正在学C++进行讨论

    机缘巧合下,我发现正在学C++博主发布了很多有关算法的博客,本能的觉得老哥铁定知道,然后厚着脸皮向老哥留言了。没想到老哥竟然回复我了,哈哈。

    原讨论地址,讨论内容在评论区

    这里对讨论内容进行整理

    • Q:

      对于数据结构而言, 有序和无序是指插入元素的顺序还是元素的排列顺序(如从小到大)

    • A:

      任意给一组数,可以说这组数是有序(小到大/大到小)或无序(乱序)的,然后对这组数进行排序使得它按照一个顺序排列。插入元素的顺序,怎么叫有序怎么叫无序?你可以说,对于一组有序的数,把另一个单独的数插入到这组数中使得这组数依旧有序。

    • Q:

      或许是考虑的角度问题,我下面举一个具体一点例子:

      有序链表,此处的有序为元素有排列顺序, 但是有序链表其实是一个无序的数据结构

      数据结构的有序无序是以插入元素的顺序来看的。

      如果在插入元素时 如同set数据结构一样进行了去重, 或者进行了排序打乱了插入的元素, 则认为该数据结构是无序的。

      如同python的list一样,很多人的介绍是一个有序可变的序列

    • A:

      我学习的严蔚敏老师的数据结构中,有序就是指一组数,按某个关键字有序排列,就是有序。

      可以有重复值,可以插入,可以删除,但是有序无序与这些操作没关系。

      有序无序,指的是整体的元素关键字是否按照某个顺序。

      你说的有序链表,我理解的意思是,一组数的逻辑结构是线性的,物理结构是链式存储。我没有懂你说的“有序为元素有排列顺序, 但是有序链表其实是一个无序的数据结构”。

      数据元素相互之间的关系,存在着四种逻辑结构和四种物理结构。你说的是什么数据结构?

      还有,有序无序是以插入元素的顺序来看的,我不懂,可以插入在末尾、在中间在任何一个位置,怎么判断有序无序?

      (个人补充:当我看到可以插入在末尾、在中间在任何一个位置的时候又蒙了,随后看到了老哥在问答中的回答后就明白了)

    • Q:

      讲的很透彻,我大概明白所谓的有序和无序应该站在从什么角度去理解了。谢谢您。


    下方为正在学C++老哥在问答上的回答,原文地址

    • Q:

      数据结构中的有序和无序是如何理解的?

      以JavaScript为例

      let arr = [1,3];
      arr.push(2);
      console.log(arr); //[1,3,2]
      

      上方的数组是一个有序的还是无序的呢?

      如果是有序的则可以理解为是以插入顺序来看的;

      如果是无序的则可以理解为是以值的排序顺序来看的;

      目前在看数据结构, 看到有序链表这一块有点懵, 感觉有序和无序的定义很模糊.

    • A:

      这一般来说是无序的。

      排序,是将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列。

      如果你的关键字是元素的大小,就是无序的。

      如果你为每个元素增加一个属性:位置,1的位置是1,3的位置是2,2的位置是3,且关键字是每个元素的位置,那就是有序。

    总结

    判断有序和无序需要辩证地来说。

    以上面的例子来说:

    let arr = [1,3];
    arr.push(2);
    console.log(arr); //[1,3,2]
    

    如果站在值的角度来说这个数组为无序的,因为它没有对数据进行排序,数据依然是以乱序排列的

    如果站在数组本身的实现逻辑的角度来说,它是有序的,因为可以按照索引进行取值,并且索引是有序的

    有序集合:集合里的元素可以根据key或index访问
    无序集合:集合里的元素只能遍历。

    编程是一个不断试错的过程,在这个过程中感谢每一个帮助过我的人,每一个把自己的理解和学习心得无私分享出来人。

    如果文章中有不对的地方请您在评论区指出来,我会及时改正。

    文章的末尾再次感谢正在学C++博主。

    展开全文
  • 其实有序和无序树的概念很简单,我们来康康: 有序树的定义:若将树中每个结点的各子树看成是从左到右有次序的(即不能互换),则称该树为有序树(Ordered Tree) 无序树的定义:若将树中每个结点的各子树从左到右是...

    其实有序树和无序树的概念很简单,我们来康康:

    有序树的定义:若将树中每个结点的各子树看成是从左到右有次序的(即不能互换),则称该树为有序树(Ordered Tree)

    无序树的定义:若将树中每个结点的各子树从左到右是没有次序的(即可以互换),则称该树为无序树

     

    比如我们有这样的例子,在Linux操作系统当中,文件都是以一定的次序排列的,比如在同一个文件夹下的文件,他们一定会以一定的顺序进行排列,比如按照数字的大小顺序或者按照英文字母的顺序进行排列,如下图所示:

     

     

     

     

     我们可以看到在homework文件夹下,homework就可以看作是一个树结构当中的节点Node,下面的孩子节点分别是hw1,hw2.hw3她们是按照数字的顺序进行排列的。同样的,我们可以看另外一个有关有序树的例子:

     

     这也是一个典型的有序树的例子。

     

     

    展开全文
  • 数据结构】有序和无序树的区别

    万次阅读 多人点赞 2017-07-20 16:42:43
    这个问题想了好久才弄清楚,现在总结一下。 概念是这样的: ...换而言之,兄弟结点有顺序的树,称为有序树,兄弟之间无顺序的树称为无序树。 那么,3个结点到底能组成多少种有序树,多少
    这个问题想了好久才弄清楚,现在总结一下。

    概念是这样的:

    有序树
    树中任意节点的子结点之间有顺序关系,这种树称为有序树

    无序树
    树中任意节点的子结点之间没有顺序关系,这种树称为无序树,也称为自由树

    换而言之,兄弟结点有顺序的树,称为有序树,兄弟之间无顺序的树称为无序树。

    那么,3个结点到底能组成多少种有序树,多少种无序树呢?

    先看无序树,兄弟无序,但是父子还是有序的
    假设有A、B、C三个结点,总共可以组成 9 种无序树,分别是:
    • 1个父节点,2个子结点的情况有 3 种
    • 链式结构有 6 种(因为链式结构相互之间都是父子关系,所以有 6 种不同的组合)

    理解了无序树,有序树也更好理解了
    有A、B、C三个结点,总共有 12 种有序树,分别是:
    • 1个父节点,2个子结点的情况有 6 种
    • 链式结构有 6 种

    三个结点组成的二叉树,种类就更多了,有 30

    下面的类型,每一个都有6种

    展开全文
  • 有序数组和无序数组

    2018-05-08 16:37:06
    大O表示法 O(1):优秀。例如无须数组插入。...总结有序数组和无序数组 有序数组:插入+ 查找 +删除 = O(N) +O(logN)+O(N); 无序数组:插入 + 查找 + 删除 = O(1) + O(N) + O(N); 所以在数据...

    大O表示法

      O(1):优秀。例如无须数组插入。

      O(logN):良好。例如有序的二分查找。

      O(N):及格。例如无序数组的删除,有序数组的删除和插入,线性查找。

      O(N2):不及格。例如冒泡排序。

    总结有序数组和无序数组

      有序数组:插入+ 查找 +删除 = O(N) +O(logN)+O(N);

      无序数组:插入 + 查找 + 删除 = O(1) + O(N) + O(N);

      所以在数据偏向查找操作的时候用有序数组快一些,在数据偏向插入的时候,无序数组好一些。删除操作效率一样。

    展开全文
  • 以JavaScript为例 <code class="language-javascript">let arr = [1,3]; arr.push(2); console.log(arr); //[1,3,2]</code></...目前在看数据结构, 看到有序链表这一块有点懵, 感觉有序和无序的定义很模糊.</p>
  • 有序广播和无序广播

    2016-10-13 17:03:00
    无序广播:类似新闻联播:广播不可以被终止 数据不可以被修改 有序广播:类似中央发送的红头文件 按照优先级一级一级的接收 有序广播可以被终止 数据可以被修改 转载于:...
  • HashSet , TreeSet , 无序是指存储数据的顺序取出数据的顺序不一致;但是TreeSet 是按照指定的顺序排个序出来; 如果,我们想按照数据输入的顺序依次输出数据(即,如果依次输入4、1、7、3,输出时依次是4、1、7、...
  • 用于组织数据的列表 学习了这么多控制网页显示的HTML标签,读者可以初步制作纯文章页面了。本节学习HTML中的列表元素,列表形式在网站设计中占有比较大的比重,显示信息非常整齐直观,便于用户理解。在后面的CSS样式...
  • 查找引入 在大数据时代,如何在海量数据中快速检索到自己想要的数据?首先需要设计高效的数据...符号表线性存储数据,但是根据在插入操作过程中是否保证数据有序分为无序和有序表: 0.无序无序表API(仅实现了...
  • 有序广播:可以被拦截 、可以被终止、可以被修改数据(有优先级) 无序广播:不可被拦截 、不可被终止 开发一般使用无序广播 转载于:https://www.cnblogs.com/childhooding/p/4334165.html...
  • 文章目录无序数组和有序数组比较无序数组特点有序数组特点代码实现自己的数组无序数组有序数组 无序数组和有序数组比较 无序数组 增:在数组最后插入 删:找到元素;改为null;后面的元素逐一前移 查:从第一项元素...
  • Java实现有序数组和无序数组

    千次阅读 2018-09-05 20:03:38
    描述: 线性表是其组成元素之间具有线性关系的一种线性结构。在线性表中的任意位置都可以...在程序设计语言中,数组是一种构造数据类型。          时间复杂度表:   增加 查找 删除 更改 ...
  • 参考资料 《算法(java)》 — — Robert Sedgewick, Kevin Wayne 《数据结构》 — — 严蔚敏 这篇文章主要介绍实现字典的两种方式 有序数组 无序链表 (二叉树的实现方案将在下一篇文章介绍) ...
  • 有序数组: 添加数据: 查找插入位置用二分查找是O(log2n)。但是数组的插入操作为了保证有序性需要将插入位置后的元素全部后移一位,这需要O(n)。所以总的时间复杂度是O(n)。( O(log2n)+O(n)=O(n) ) 删除数据...
  • 列表可以分为三大类:无序列表、有序列表自定义列表。 无序列表 <ul>标签标示HTML页面中项目的无序列表,一般会以项目符号呈现列表项,而列表项使用<li>标签定义。 无序列表的基本语法格式 <ul>...
  • 一、有序广播 发送出去的每条广播都 按照一定的优先级进行接受二、无序广播 不管有没有接收者,准时播放区别:有许广播可以被终止,数据可以被修改;无序广播不可被重视,数据不可以被修改三、特殊广播接收者屏幕...
  • 无序表 class Node: def __init__(self, nitdata): self.data = initdata self.next = None def getData(self): return self.data def getNext(self): return self.next def setData(self,new...
  • dspp-keras是dspp-keras集成,它提供7200+个不相关蛋白质的氨基酸序列,具有形成二级结构或保持无序的倾向。 我们强烈建议您阅读本文档的其余部分,在FAQ部分中滚动,并从example/目录中训练测试模型。 重要的是,...
  • 用于组织数据的列表 学习了这么多控制网页显示的HTML标签,读者可以初步制作纯文章页面了。本节学习HTML中的列表元素,列表形式在网站设计中占有比较大的比重,显示信息非常整齐直观,便于用户理解。在后面的CSS样式...
  • 数组:数组存储具有相同数据结构的元素集合,一维数组占有一块内存空间,数组一旦占用存储空间(连续),其地址容量就是确定的,不能改变。 下面是详细的代码实现结果: package array; import java.util....
  • ,但其对任意输入数据的期望时间复杂度都能达到 o(nlogn);   #include #include #include #include //快速排序 针对有序 反序的 改进的  const int maxn=100; int ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,043
精华内容 1,617
关键字:

有序数据和无序数据