数据结构的排序算法中,哪些排序是稳定的,哪些排序是不稳定的?

快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法。

排序算法的稳定性 排序算法的稳定性指的是什么排序算法的稳定性 排序算法的稳定性指的是什么


排序算法的稳定性 排序算法的稳定性指的是什么


基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。

1.所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个的算法可以节省大量的资源。

2.排序(Sorting) 是 计算机程序设计中的一种重要作,它的功能是将一个 数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。

3.稳定度(稳定性)

一个 排序算法是 稳定的,就是当有两个相等记录的关键字 和 ,且在原本的列表中 出现在 之前,在排序过的列表中 也将会是在 之前。

当相等的元素是无法分辨的, 比如像是整数,稳定度并不是一个问题。然而,设以下的数对将要以他们的个数字来 排序。

4.不稳定 排序算法可能会在相等的键值中改变纪录的相对次序,但是稳定排序算法从来不会如此。不稳定 排序算法可以被特别地实现为稳定。作这件事情的一个方式是人工扩充键值的比较,如此在其他方面相同键值的两个对象间之比较,就会被决定使用在原先数据次序中的条目,当作一个同分决赛。然而,要记住这种次序通常牵涉到额外的空间负担。

为什么快速排序是不稳定的算法

分类: 电脑/网络 >> 程序设计 >> 其他编程语言

问题描述:

我用free pascal

解析:

排序算法不稳定的含义是:

在排序之前,有两个数相等.

但是在排序结束之后,它们两个有可能改变顺序.

比如说:

在一个待排序队列中,A和B相等,且A排在B的前面,而排序之后,A排在了B的后面.这个时候,我们说这种算法是不稳定的.

(只要有这种可能性,我们就说算法是不稳定的.)

注: 算法的不稳定性,与所用的语言没有关系的.

那么,快速排序为什么不稳定呢?

我们来看看快速排序的过程:(还是借用之前的那个设,设A,B相等,并和其它一堆数据一起参加排序.)

设此时的是小于等于关键字为排在前面的一组组,大于为另外排在后面的一组.

在选取一个数出来分组的时候,如果选到了A,那么在B<=A的情况下,B将会排在A的前面.

因为有这样的_可能性_,所以说我们这种算法是不稳定的.

注:请参考的具体算法.

另外,TO 朱_大志同学,可能我们两个的教材有一定的别.

在快速排序、堆排序、归并排序中,什么排序是稳定的?

归并排序是稳定的

在常见排序中,只有希尔排序、堆排序、快速排序是不稳定的

归并排序(n log n);稳定

堆排序 (n log n);不稳定

(n log n)不稳定

堆排序了

关于快速排序算法的稳定性是什么?

快速排序算法的稳定性是什么:定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。

对于不稳定的排序算法,只要举出一个实例,即可说明它的不稳定性;而对于稳定的排序算法,必须对算法进行分析从而得到稳定的特性。

详细解释:

堆排序、快速排序、希尔排序、直接选择排序是不稳定的排序算法,而冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。

首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。

其次,说一下稳定性的好处。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,个键排序的结果可以为第二个键排序所用。基数排序就 是这样,先按低位排序,逐次按高位排序,低位相同的元素其顺序再高位也相同时是不会改变的。

以上内容参考

排序算法的稳定性是指()。

排序算法的稳定性是指()。

A.经过排序后,能使原来关键字值相同的数据保持原有顺序中的相对位置不变

B.经过排序后,能使原来关键字值相同的数据保持原有顺序中的位置不变

C.排序算法的性能和被排序的数据数量关系不大

D.排序算法的性能和被排序的数据数量关系密切

正确:经过排序后,能使原来关键字值相同的数据保持原有顺序中的相对位置不变