算法图解

330 阅读2分钟

二分查找

二分查找是一种算法,其输入时一个有序的元素列表(必须有序的原因稍后解释)。如果要查找的元素包含在列表中,二分查找返回其位置;否在返回null。

  • 二分查找的速度比简单查找快得多
  • O(log n)比O(n)快。需要搜索的元素越多,前者比后者就快得越多。
  • 算法运行事件并不以秒为单位
  • 算法运行事件是从其增速的角度度量的
  • 算法运行时间用O表示法表示

选择排序

内存的工作原理

例如你取看演出,演出前你要寄放东西在储物柜里,储物柜有很多个抽屉,你选了两个抽屉放完你的物品之后,你开开心心的去看演出了。这个过程就大致是计算机内存的工作原理。就算及就像是很多抽屉的集合体,每个抽屉都有地址。储存数据的基本方式有两种——数组和链表。

数组和链表

数组就相当于你去电影院和朋友们坐好位置了,你们一起是在同一个地址。结果,又来了一个朋友,你们旁边的位置已经有人做了,你们为了都坐在一起,从而换一个新的可以坐下所有人的位置。

链表就相当于寻宝游戏里每过一个关卡就会有指示,指向下一个关卡的地址。所以链表和数组的区别在于在同一个内存地址中,数组中所有的元素都要连在一起储存,而链表不需要。例如你和你朋友50个人去上网,网吧正好只剩下50个机子。但是却不是连机,你们得分开坐。这种情况就是数组完成不了,链表可以。

数组和链表的区别

当我们要访问链表的最后一个元素时,只能通过第一个元素找到第二个元素的地址,以此类推,才能找到最后一个元素的地址。这样我们读取元素的效率就很低。而数组中,所有元素都可以同时获取到,这样访问任意一个元素的地址,效率就高的多。

小结

  • 计算机内存犹如一大堆抽屉
  • 需要存储多个元素时,可使用数组或链表
  • 数组的元素都在一起
  • 链表的元素时分开的,其中每个元素都存储了下一个元素的地址
  • 数组的读取速度很快
  • 链表的插入和删除速度很快
  • 在同一个数组中,所有元素的类型都必须相同( 都为int、double等)