数组 重复值问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a15998126054/article/details/83182262

路越走越多,可以坚持,但不要固执

设计数据结构时,有一个很重要的条件就是是否允许关键字重复。但,这个也是需要看现实需求,灵活应变的。

如果雇员的信息存储,以其员工号为key的话,肯定是不会重复的。然而,如果是姓的话,可想而知,存储的数据结构的key很有可能发生重复。

编写一个不允许重复的数据存储结构时,插入时,要检查所有的数据,判断是否有相同数据。允许重复的时候,查找时又需要查找完所有的数据,当然我们也可以查找到一个就返回。下面我们以允许重复来看看各个操作的复杂度

查找

如果要找到所有的匹配项,我们每次都需要查找N步。这里我们也可以提供一个查到一个匹配项就返回的方法,这个平均只需要N/2步。做js的,你看他的内置array,就提供了这样的函数。

插入

直接一步插入

删除

由于允许重复,删除就变得异常复杂了。需要查找所有数据项,找出相同的数据项。如果有多个,没删除一次还需要移动后面的数据项补洞。删除一个就已经是N步了,可想允许重复的条件下,删除会有多慢。

到此,已经多次提到步这个词了。这个就是实现对应操作的思想(或者说逻辑,其实就是算法)会有多少步数据操作(查找,移动)。这个步越大,时间就越多。

猜你喜欢

转载自blog.csdn.net/a15998126054/article/details/83182262