2010-10-28 49 views
4

直型选型交换选择系列有什么区别?我今天进入了一个小辩论 - 我的教授在他的讲义中使用了这两个术语。维基百科和任何教科书或网站会给你的选择排序是他所称的“交换选择排序”。直选型与交换选型分类

我从来没有听说过(只有“选择排序”)所使用的“交换选择排序”一词,并不能找到对前者术语任何相关的资源联机。此外,“交换排序”重定向到维基百科上的冒泡排序。

我还从来没有听说过之前所使用的术语“直选择排序”,并不能找到任何相关的资源。他的笔记指出,这是一种选择排序的版本,它使用辅助数组而不是就地排序,从最小元素到最大元素逐个填充它。当我提出这个问题时,他声称这个问题比较老,并且仅仅因为它没有出现在Google上并不意味着这是不正确的。不过,我在Google上发现了更加晦涩的事情,而类似选择排序的东西将在网络上拥有大量资源。

那么,这些算法是否按其他名称?他只是有错的名字吗?谁是对的?

+0

不要与你的教授争吵:),即使你是对的,他仍然有评级书! – Kiril 2010-10-28 14:42:44

+2

我很关心正确的答案,我不必担心我的成绩。 – 2010-10-28 14:45:38

+0

像bobince所说的,语义不是很重要......重要的是你明白了算法的工作原理。当您需要应用这些算法时,您的老师所称的算法将会产生一点差异。 – Kiril 2010-10-28 15:22:14

回答

5

我从来没有听说过这些具体条款,但他们道理给我。只要你明白他们在做什么,我不认为这个术语真的很重要。

如果您要创建一个列表的排序的副本,您可以创建新的列表中的一个接一个从最小的旧列表的每个项目; '直'似乎是合理的描述。

OTOH如果你排序就地则每次你移动一个新的项目列表中的头一个列表,你必须移动,这是以前没有倒退,以腾出空间的项目。在数组列表中,最便宜的方法就是将新的最小项目和旧的项目交换位置交换。 (在一个链表它会更快让列表滑动的整个尾背面一处。)

教科书往往集中在就地排序。