algorithm - 荷兰国旗问题与排序的区别

标签 algorithm sorting language-agnostic

我正在阅读 Dutch national flag problem我不明白:为什么这与简单的排序问题不同?

我的意思是:如果我们将 0 分配给红色,将 1 分配给白色,将 2 分配给蓝色并执行标准快速排序或其他任何操作......为什么我不能得到正确答案?

我错过了什么吗?

最佳答案

荷兰国旗问题只是更一般的排序问题的特例,其中唯一允许的元素是 0、1 和 2。您完全可以使用标准排序算法解决它。

这个问题本身很有趣,部分是出于历史原因,但主要是因为很难找到稳定、时间效率 (O(n)) 和空间效率 (O(1)) 的解决方案。很容易获得具有这三个属性中的两个的解决方案,但同时获得所有这三个属性(我相信)是一个悬而未决的问题。作为开发快速排序和使用重复键分区的算法的场所,它也很有趣;您可以将 0、1 和 2 视为小于主元、等于主元和大于主元,并且基本上可以对重复元素进行快速排序。

希望这对您有所帮助!

关于algorithm - 荷兰国旗问题与排序的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31223561/

相关文章:

algorithm - 3D网格边缘检测/特征线计算算法

algorithm - "true"元素的最大连续方形子矩阵

language-agnostic - 代码重用的缺点是什么?

c++ - 如何将结构数组中的成员数据传递给函数?

algorithm - 是否有一些有效的算法可以在 O(1) 额外空间或最小额外空间中合并 k 个排序数组

language-agnostic - 如何在笛卡尔坐标中绘制n边正多边形?

c++ - C++中使用STL实现DFS时遇到的段错误

algorithm - 这种存储方式叫什么?

php - 确切知道转换后的视频的大小

在经典 ASP 中对集合进行排序