二分查找不能用于链表的原因_你在数组里找东西_下面我会详细解释一下为什么

二分查找不能用于链表的原因

二分查找是一种超级快的高效查找方法,它特别适合那些已经排好序且不会变动的数组或列表。但是,链表这种东西就不太适合用二分查找了,因为链表不支持我们快速找到某个节点。下面我会详细解释一下为什么。

想象一下,你在数组里找东西,就像在抽屉里找玩具一样,直接一抽屉一抽屉地找。但链表就像一串珠子,你得一个一个珠子往下拉,才能找到你想要的那个。所以,链表不支持像数组那样快速地“跳”到中间去,这就是为什么二分查找不适合链表的原因。

二分查找的原理及实现

二分查找的原理其实很简单,就像你在玩游戏一样,每次都把中间的东西排除掉,这样就能更快地找到你想要的。

比如,你有一个排好序的数列,你想找某个数字。你先找到中间的数字,如果这个数字正好是你想要的,那你就找到了。如果不是,你就知道这个数字要么在左边,要么在右边。然后你就在那一半里继续找,这样每次都能排除一半的数字,直到找到为止。

下面是一个简单的二分查找的例子:

数列 比较
1, 2, 3, 4, 5 比较中间的3,发现比4小,所以找左边的
1, 2, 3, 4 比较中间的2,发现比4小,所以找左边的
1, 2, 3 比较中间的2,发现比3大,所以找右边的

链表简介

链表就像是把很多珠子串起来一样,每个珠子都是一个节点,节点里面可以放很多数据。链表有一个特殊的头节点,它不存储数据,只是标记着链表的开始。

链表的特点是可以很方便地添加、删除节点,而且不需要像数组那样连续存储。

下面是一些常见的链表类型:

链表的增删改查

在链表中插入或删除节点,不需要像数组那样移动其他节点,只需要调整指针就可以了,所以操作起来很快。

下面是插入和删除节点的基本步骤:

  1. 插入数据:找到要插入位置的前一个节点,将它的next指针指向新节点,然后将新节点的next指针指向下一个节点。
  2. 删除数据:找到要删除的节点,将其前一个节点的next指针指向删除节点的下一个节点,然后删除该节点。