有什么区别直接选择排序 vs. 交换选择排序?今天我陷入了一场争论——我的教授在他的讲义中使用了这两个术语。维基百科和任何教科书或网站都会为您提供的选择排序就是他所说的“交换选择排序”。
我以前从未听说过“交换选择排序”这个术语(仅“选择排序”),并且在网上找不到任何有关前术语的相关资源。此外,“交换排序”重定向到维基百科上的冒泡排序。
我以前也从未听说过“直接选择排序”这个术语,并且在网上找不到任何相关资源。他的笔记指出,这是选择排序的一个版本,它使用辅助数组而不是就地排序,从最小到最大的元素逐一填充它。当我提出这个问题时,他声称这个问题比较旧,并且仅仅因为它没有出现在谷歌上并不意味着它是不正确的。然而,我在谷歌上发现了更多晦涩的东西,像选择排序这样的东西将在网络上拥有大量的资源。
那么,这些算法还有其他名称吗?他只是把名字写错了吗?谁是对的?
我以前没有听说过这些确切的术语,但它们对我来说很有意义。我认为只要您了解他们在做什么,术语就真的那么重要。
如果您要创建列表的排序副本,则可以从旧列表的最小值开始逐项创建新列表中的每个项目; “直”似乎是对这一点的合理描述。
OTOH,如果您要就地对列表进行排序,那么每次将新项目移动到列表的头部时,您都必须向后移动先前存在的项目以腾出空间。在数组列表中,最便宜的方法就是留下新的最小项目和旧项目交换位置:交换。 (在链接列表中,让列表的整个尾部滑回一位会更快。)
教科书往往集中于就地排序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)