当前位置: 首页 > 知识库问答 >
问题:

为复制关键点算法选择轴

沈飞翔
2023-03-14

我试图了解在数组中查找重复键时如何选择轴。我看到的大多数示例总是选择第一个元素作为轴心,假装这个元素在数组中是重复的。如果不是这样呢?如何正确选择轴?

假设一个数组a[lo... hi]和v分区元素,v=a[lo]。我们还有2个指数gt和lt

  • a[lo…lt]小于v

所以我们的想法是从左到右扫描,直到我

  • (a[i]

这个想法非常类似于快速排序分区,我想知道在这种情况下如何正确选择枢轴。


共有1个答案

孙鑫鹏
2023-03-14

选择“轴复制”与否无关。您的算法应该尝试递归地查找重复的元素,直到找到重复的键,它才会停止。

 /*
 *assume that all element are positive, reutrn -1 when there is no duplicate keys
 */
int duplicate_key(int a[], int lo, int ho) { 
 if (ho - lo <= 1) return -1; //no duplicate keys when there is no more than 2 keys
 a[lo ... lt] are less than v
 a[lt ... gt] are equal to v
 a[gt ... hi] are greater than v
 if (gt - lt > 1) return v;
 return max(duplicate_key(a, lo, it), duplicate_key(gt, hi));
}
 类似资料:
  • 我在摆弄方法,并在寻找,如果我创建两个名为“hello”的方法,使用它们想要的不同对象,并将“null”传递给该方法,将执行哪个方法: 每次输出都是“再见”,但我仍然不明白这背后的逻辑。在与谷歌进行了简短的研究后,没有任何解释,我决定在这里提出这个问题。 我希望有人可以解释选择算法或给我一个链接到一个解释。

  • 这是我的组合框: 在我的控制器上,我有一个函数,它调用一个工厂,然后通过web服务获取一个密钥,例如,该密钥被称为“HIRE”。我的组合框有几个选项,其中一个有“HIRE”键。 现在在我的控制器中,我如何设置密钥,以便我的组合选择该选项? 我以为会是这样的: 但这似乎不起作用。

  • 主要内容:选择排序算法的具体实现对数据量较少的序列实现升序或降序排序,可以考虑使用 选择排序算法,它对应的时间复杂度为 。 排序排序算法对含有 n 个元素的序列实现排序的思路是:每次从待排序序列中找出最大值或最小值,查找过程重复 n-1 次。对于每次找到的最大值或最小值,通过交换元素位置的方式将它们放置到适当的位置,最终使整个序列变成有序序列。 举个例子,我们使用选择排序算法对 {14, 33, 27, 10, 35, 19,

  • 问题内容: 我有一种类似于以下的双向外交关系 我如何将Parent.favoritechild的选择限制为仅其父母为自己的孩子?我试过了 但这会导致管理界面未列出任何子项。 问题答案: 我刚刚在Django文档中碰到。尚不确定这是如何工作的,但在这里可能是正确的事情。 允许指定常量,可调用对象或Q对象以限制键的允许选择。常量在这里显然没有用,因为它对所涉及的对象一无所知。 使用可调用(函数或类方法

  • 下面是我的代码。 问题是当我选中一个复选框时,包括选中循环视图中的其他复选框。但当我签入适配器时,项目被正确添加,但复选框被复制。 例如:如果我选中了第一项复选框,向下滚动第16项复选框也会被选中。取消选中该复选框也将取消选中第一项。

  • 问题内容: 我正在执行插入查询,其中如果已经存在唯一键,则许多列中的大多数都需要更新为新值。它是这样的: 我不确定该子句的语法应该是什么。如何从子句引用当前行? 问题答案: MySQL将假定等号之前的部分引用INSERT INTO子句中命名的列,而第二部分引用SELECT列。