排序算法的附加属性

除了比较还是非比较,递归或迭代之外,还有其他一些属性可用于区分排序算法。
在本节中,我们将讨论就地与非就地稳定与不稳定以及高速缓存排序算法的性能。

如果排序算法在排序过程中仅需要恒定量(即,O(1))的额外空间,则称其为就地排序算法。就是这样,少量的额外变量的常量是可以的,但我们不允许具有可变长度的变量,这取决于输入大小N.

归并排序,由于其合并子例程需要额外的大小为N的临时数组,因此不在原位。

讨论:冒泡排序,选择排序,插入排序,快速排序(是否随机),计数排序和基数排序如何?哪些是就地?

如果在执行排序后算法保留具有相同键值的元素的相对顺序,则这个排序算法称为稳定的排序。

稳定排序的示例应用:假设我们有按字母顺序排序的学生姓名。 现在,如果此列表按教程组号重新排序(回想一个教程组通常有许多学生),稳定的排序算法会确保同一教程组中的所有学生仍按字母顺序显示其名称。

讨论:在这里讨论过的排序算法中哪些是稳定的?
尝试排序数组A = {3, 4a, 2, 4b, 1}进行排序,即有两个4(4a先,然后4b)的副本。

我们已经到了最后的排序的电子讲座。
但是,VisuAlgo中还有另外两种嵌入在其他数据结构中的排序算法:堆排序平衡BST排序。 我们将在这两个数据结构的电子讲座里面讨论它们。

猜你喜欢

转载自blog.csdn.net/weixin_46689011/article/details/119301738