• 选择排序


    一、内存的工作原理

      假如你去游乐场游玩,需要将东西寄存。寄存处有一个柜子,柜子有很多抽屉。

      每个抽屉可以放一件东西,你有两件,所以说你需要两个抽屉,然后你将这两样东西存到抽屉里,这样你就可以轻松的去游玩了。

      其实,这大致就是内存工作的原理。计算机的内存是一个抽屉的集合,里面包含了很多的抽屉,每个抽屉都有一个地址。

      当你需要将数据存储到内存的时,你请求计算机提供存储空间,计算机给你提供一个存储地址。当你需要存储多个数据时,有两种借本的方式———数组与链表。

      但他们并非都适用于多有情景,因此知道他们的差别很重要。

    二、数组与链表

      数组:

        有序的元素序列,在同一数组中,所有元素的类型都必须相同;

        其在内存中存储是连续的

        因为数组每个元素对应一个下标值,所以数组读取元素速度快

        数组在新增修改删除元素时,效率很慢,若插入的元素在中间,则需要将后面的元素全部后移,数组在修改插入元素时是需要移动的;

        数组是随机访问;  

      链表:

        每个元素都存储了下一个元素的地址,从而使一系列随机的内存地址串连在一起;

        元素可存储在内存任何地方

        链表新增修改删除元素时,效率很快,只需将其放入(修改)内存,并将其地址存储到前一个元素中,链表无需移动元素;

        需要一次读取所有元素时,链表的效率很多

        如果要读取链表的最后一个元素,只能从第一个元素开始读,因为得知道下一个元素的地址,所以列表的读取效率非常慢的;

        链表是顺序访问

    三、选择排序

      选择排序是一种灵巧的算法,但其速度不是很快,其运行时间为O(n*n);

      随着排序的进行,每次需要检查的元素数都在减少,最后一次需要检索的元素都只有一个。既然如此,运行时间怎么还是O(n*n)呢,这与大O表示法中的常数有关。

      你说得没错,并非每次都需要检查n次,第一次需要检查n个元素,第二次需要检查n-1,第三次是n-2,...... 2和1。所以平均每次检查的元素为1/2n,因此运行时间应该为n*1/2n,但是大O表示法省略了诸如1/2这样的常量,所以简单写为O(n*n)。

  • 相关阅读:
    激战运钞车高清在线观看
    AutoLISPDCL各种控件
    你懂的
    AutoLISP简单DCL对话框
    我奋斗了18年不是为了和你一起喝咖啡
    AutoLISP选择集操作
    我奋斗了18年才和你坐在一起喝咖啡
    AutoLISP取得多段线顶点坐标
    AutoLISP确定图纸幅面DCL对话框设计
    AutoLISP对话框DCL控件属性
  • 原文地址:https://www.cnblogs.com/zsvslx/p/10564274.html
Copyright © 2020-2023  润新知