稳定和就地一样吗?

问题描述 投票:0回答:4

在谈论算法时。我看到了就地排序算法和稳定排序算法的描述。说算法稳定就等于说算法就地吗?如果不是有什么区别?

algorithm sorting
4个回答
6
投票

不,

算法稳定是指算法执行后,“相等”元素的相对顺序保持不变。

例如,如果你有一个数组

{-2, 4, 5, -11, 9, -10} 

并且您希望对其进行排序,使所有负面元素都位于正面元素之前。并且您希望 -ve 和 +ve 元素的相对顺序保持不变

{-2, -11, -10, 4, 5, 9} 

这是稳定算法的输出

正如评论中所述,就地算法意味着该算法除了输入数据之外不需要额外的空间。输出数据在内存中占据与输入数据占据相同的位置,并且输入数据被破坏。


3
投票

稳定是指输入元素的顺序不变,除非需要改变以满足要求。应用于相等元素序列的稳定排序不会改变它们的顺序。

In-place是指输入和输出占用相同的内存存储空间。不会将输入复制到输出,除非您制作了备份副本,否则输入将不再存在。这是一个通常需要命令式语言来表达的属性,因为纯函数式语言没有存储空间或覆盖数据的概念。


2
投票

不,不一样。

稳定排序是这样一种排序,对于比较相等的元素,它们在排序输出中的相对位置保证与源中的相对位置相同。将此与不稳定排序进行对比,其中比较相等的项目将以不可预测的顺序出现在排序结果中。这种区别在简单情况下并不重要(例如对整数进行排序),但当排序标准只是每个项目包含的数据的一部分时(例如仅按尺寸对彩色袜子进行排序),这种区别就变得很重要。

“就地排序”是一种无需额外空间即可对输入进行排序的排序;它也被称为“破坏性”排序,因为排序后您丢失了输入数据的未排序形式(它已被排序数据取代)。

不,两者不同 稳定 - 它给出了数组中每个元素的顺序,这意味着如果有两个相同值的元素,那么在对未排序数组中首先出现的两个相同元素之间的元素进行排序后,将在排序数组中的另一个相同元素之前写入。 例如:- array={10,1,1',2} 排序后 数组={1,1',2,10}

0
投票
In Place-当我们不需要任何额外的数组来对数组进行排序时进行排序。 例如:- 冒泡排序、插入排序等

© www.soinside.com 2019 - 2024. All rights reserved.