我发现选择排序使用蛮力策略。但是,我认为它使用贪婪策略。
为什么我认为它使用Greedy:它在外部循环从0到n-1,从i + 1到n-1。这真的很天真。它在每次迭代中选择一个最小元素 - 它在本地选择最佳。一切都像贪婪,但事实并非如此。
你能解释一下我为什么不这么想?有关此问题的信息,我在互联网上找不到。
答案 0 :(得分:2)
设A为一个整数列表,使得:A = [5,4,3,6,1,2,7]
贪婪算法将寻找最有希望的方向,因此:
所以使用这种方法的排序列表将导致列表排序如下: [3,4,5,1,2,7]
答案 1 :(得分:2)
选择排序确实可以被描述为贪婪算法,在它意义上:
实际上,相同的描述也可以应用于大多数其他排序算法 - 唯一真正的区别是子问题的选择。例如:
事实上,在我的头脑中,我无法想到任何实际的排序算法在这个意义上不会贪婪。 (Bogosort不是,但很难被称为实用。)此外,将这些排序算法制定为像这样的贪婪优化问题相当模糊了比较排序算法时实际上重要的细节。
因此,我认为表征选择排序或任何其他排序算法,因为贪婪技术上有效但实际上没用,因为这种分类没有提供真正有用的信息。
答案 2 :(得分:1)
贪婪和蛮力描述了算法的不同特征。
贪婪意味着每一步的算法选择一些本地最佳的选项。也就是说,它没有前瞻。
暴力意味着算法以直接的方式查找选项,并将其全部考虑在内。例如。它可能会通过二分搜索来搜索一个元素,它不再是暴力。
因此算法可能既贪婪又蛮力。这些品质并不是相互排斥的。