直选选择排序与交换选择排序

Jak*_*les 4 sorting algorithm terminology

直接选择排序交换选择排序有什么区别?我今天进行了一些辩论 - 我的教授在他的讲义中使用了这两个术语.维基百科和任何教科书或网站给你的选择排序是他所谓的"交换选择排序".

我以前从未听过"交换选择排序"这个术语(仅限"选择排序"),并且无法在线查找以前术语的任何相关资源.此外,"交换排序"重定向到维基百科上的冒泡排序.

我也从未听过以前使用的"直选选择"一词,也无法在线找到任何相关资源.他的笔记说明它是选择排序的一个版本,它使用辅助数组而不是就地排序,从最小到最大的元素一个接一个地填充它.当我提出这个问题时,他声称它已经老了,仅仅是因为它没有出现在谷歌上并不意味着它是不正确的.但是,我在谷歌上发现了更为模糊的东西,而像选择排序这样的东西将在网络上拥有大量的资源.

那么,这些算法是否以其他名称命名?他的名字错了吗?谁是对的?

bob*_*nce 5

我之前没有听过那些确切的术语,但它们对我有意义.只要你明白他们在做什么,我认为这个术语并不重要.

如果您要创建列表的已排序副本,则可以从旧列表的最小值逐个创建新列表中的每个项目; '直'似乎对此有任何合理的描述.

OTOH如果您在原地排序列表,那么每次将新项目移动到列表的头部时,您必须将之前存在的项目向后移动以腾出空间.在数组列表中,最便宜的方法是离开新的最小项目和旧项目交换位置:交换.(在链表中,将列表的整个尾部滑回一个位置会更快.)

教科书倾向于专注于就地排序.