微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

搜索和更新数组的整数值的最佳数据结构是什么?

如何解决搜索和更新数组的整数值的最佳数据结构是什么?

如果我的数组为[7,11,13,9,9,4,6],并且用户输入为10
我希望整数刚好在(或等于)10(在本例中为11)之上,并用整数-10(11-10)代替
我无法排序列表和二进制搜索,因为我必须返回已更新元素的索引。
我研究了对(索引,整数)对的排序,然后进行了二进制搜索,但是在更新之后,我不得不对对数组进行排序,以供下一次用户输入。

原始数组= [7,11,13,9,9,4,6]
排序数组= [4、6、7、9、11、13]
用户输入= 10
输出= 1(更新后的整数的索引)

更新后的排序数组= [4、6、7、9、1、13]
重新排序的数组= [1、4、6、7、9、13]
用户输入= 4
...

哪种数据结构适合实现这一目标?

解决方法

您可以使用有序集来存储(值,索引)元组。您可以定义自定义比较函数来满足您的目标(取决于所使用的编程语言)。

有序设置操作包括:

  1. 添加元素。
  2. 删除元素。
  3. 搜索元素。
  4. 搜索大于或等于给定元素的元素。
  5. 搜索大于给定元素的元素。

给定问题可以使用具有上述操作的有序集合来解决。

某些编程语言(如c ++中的 set )具有预定义的数据结构,因此您无需从头开始实现它(仅使用它即可)。有序集内部实现通常是 Red-Black Tree (c ++)或 AVL Tree

检查您的编程语言是否具有内置的有序集或使用某些包含它的库。这是一个非常有用且通用的数据结构,因此不难发现。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。