zoukankan      html  css  js  c++  java
  • 有序数组

    有序数组

    有序数组跟上一章讨论的数组几乎一样,唯一区别就是有序数组要求其值总是保持有序。即每次插入新值时,它会被插入到适当的位置,使整个数组的值仍然按顺序排列。常规的数组则并不考虑是否有序,直接把值加到末尾也没问题。

    往有序数组中插入新值,需要先做一次查找以确定插入的位置。这是它跟常规数组的关键区别(在性能方面)之一。

    虽然插入的性能比不上常规数组,但在查找方面,有序数组却有着特殊优势。

    查找有序数组

    常规数组的查找方式:从左至右,逐个格子检查,直至找到。这种方式称为线性查找。

    对于有序数组来说,即便它不包含要找的值,我们也可以提早停止查找。

    有序数组的线性查找大多数情况下都会快于常规数组。除非要找的值是最后那个,或者比最后的值还大,那就只能一直查到最后了。

    有序数组相比常规数组的一大优势就是它可以使用另一种查找算法。此种算法名为二分查找,它比线性查找要快得多。

    二分查找

    有序数组相比常规数组的一大优势就是它除了可以用线性查找,还可以用二分查找。常规数组因为无序,所以不可能运用二分查找。

    二分查找与线性查找

    每次有序数组长度乘以2,二分查找所需的最多步数只会加1。

    数组长度翻倍,线性查找的最多步数就会翻倍,而二分查找则只是增加1步。

    参考:数据结构与算法图解.2.1

  • 相关阅读:
    java 编码问题
    关于时间
    页面
    关于微信
    01-jQuery的介绍
    15-BOM
    14-定时器
    13-JS中的面向对象
    12-关于DOM操作的相关案例
    购物车练习
  • 原文地址:https://www.cnblogs.com/ooo0/p/12162081.html
Copyright © 2011-2022 走看看