【问题标题】:c/c++ get index of the element which is adding into sorted array [closed]c / c ++获取添加到排序数组中的元素的索引[关闭]
【发布时间】:2013-02-21 03:55:36
【问题描述】:

我需要函数(没有实现,只是基本的想法)

int add(int * array, , const int len, const int val);

返回索引,新元素( val )存储在其中。 排序算法是可选的,但我需要存储新元素的位置。

很遗憾,我不能使用 STD。 元素可以有重复项。

编辑:

目前的情况是我将新元素添加到最后一个位置,然后运行排序算法。所以在排序过程中索引会丢失。

【问题讨论】:

  • 所以 b-search 找到它所属的位置,然后在需要时将其填充到 shift 中,并返回您的索引。是时候写一些代码了。
  • @WhozCraig 你能改写你评论中的第一句话吗?
  • 只是为了清楚起见。你想要它被插入的索引,对吧?您正在添加这个元素。正确的 ? prior 返回的索引可能在每次插入后失效。只有新插入的项目才被返回值有效索引。你同意吗?
  • 插入后不排序。 with 插入排序。在现有数组上使用二进制搜索算法,找到新项目所属的位置。打个洞,(将所有东西向下移动一个槽),然后将项目放入。您放置它的位置是索引,它已经排序。
  • @WhozCraig 是的,有道理,谢谢。仍然不知道为什么我被否决了

标签: c++ c arrays sorting indexing


【解决方案1】:

如果您的 Array 已经排序,请使用插入排序。 插入排序将以较低的复杂性为您的新项目提供正确的位置。

其他 您可以对数组中的新项目使用二进制搜索来找到数组中的正确位置。 之后移动所有其他元素以放置新项目。

【讨论】:

    猜你喜欢
    • 2011-12-14
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多