首页 > 试题广场 >

下列排序算法中,哪个是稳定的排序算法?

[单选题]

下列排序算法中,哪个是稳定的排序算法?

  • 选择排序
  • 快速排序
  • 归并排序
  • 希尔排序
选C

堆选快希不稳定,堆选归基与初始队列无关
编辑于 2019-04-10 18:23:28 回复(0)
更多回答
推荐
C,选择排序在调整树的过程中改变节点的顺序导致不稳定,快排一个指针从前之后,一个从后至前,从后往前可能将多个小于基准数据的数原本先进入数组却放在了前面,归并算法采用的归并方式稳定的话就可以保证其稳定性,希尔排序是因为增量对不同组的顺序形成一种隔离,每个组内稳定,多个组在一起就不稳定。
编辑于 2019-04-11 14:15:41 回复(0)
选C。归并排序稳定性:每次都是从左半部份开始归并,当左半部份与右半部份的关键字相等时,左半部份优先,所以归并排序的算法是稳定的
选择排序的思想:从n个元素选出最大(最小)的元素,把它调到序列的首端(尾端),再从剩下的n-1个元素继续选出最大(最小)的元素...反复操作,直到只剩1个元素。由于选择排序的交换是跳跃式进行的,所以不稳定A错误
快速排序的思想:找一个记录作为关键字枢纽,小于枢纽的记录移到该关键字枢纽之前,大于枢纽的移到关键字之后,然后对分割的两个子序列进行递归操作,也属于跳跃式进行,所以不稳定。B错误
希尔排序:将待排序的数列分成若干个子序列,分别对子序列进行插入排序,逻辑子序列的交换跨度比较大,跳跃式的进行,所以不稳定。D错误。
---------------------------------------------------------------------------------------------------------------------------

编辑于 2019-04-10 18:42:44 回复(0)
发表于 2019-04-11 10:23:13 回复(0)
选C,因为A,B,D都是基于交换的排序,而它们三个在交换时并不是相邻位置元素的交换(冒泡稳定,因为它是基于相邻位置元素的交换),那么在交换时就可能改变两个相等元素的相对位置。
发表于 2019-04-11 10:40:24 回复(0)
C
发表于 2019-04-10 15:36:12 回复(0)
你的情绪不稳定快些选好友来聊天吧
快:快速排序     些:希尔排序
选:简单选择排序
堆:堆排序
发表于 2019-09-10 20:37:08 回复(0)
快排,希尔,选择,堆 不稳定
发表于 2020-08-20 13:50:37 回复(0)
不稳定的排序,快 些(希尔)选 堆
发表于 2020-06-12 11:21:05 回复(0)
希尔选择快速不稳。其中选择包括简单选择排序和堆排序。
发表于 2020-05-13 11:13:26 回复(0)
选C。归并排序稳定性:每次都是从左半部份开始归并,当左半部份与右半部份的关键字相等时,左半部份优先,所以归并排序的算法是稳定的
选择排序的思想:从n个元素选出最大(最小)的元素,把它调到序列的首端(尾端),再从剩下的n-1个元素继续选出最大(最小)的元素...反复操作,直到只剩1个元素。由于选择排序的交换是跳跃式进行的,所以不稳定A错误
快速排序的思想:找一个记录作为关键字枢纽,小于枢纽的记录移到该关键字枢纽之前,大于枢纽的移到关键字之后,然后对分割的两个子序列进行递归操作,也属于跳跃式进行,所以不稳定。B错误
希尔排序:将待排序的数列分成若干个子序列,分别对子序列进行插入排序,逻辑子序列的交换跨度比较大,跳跃式的进行,所以不稳定。D错误。

发表于 2019-05-14 16:20:56 回复(0)
C,归并排序是稳定排序。稳定就是不会发生,已经归序的反而跑到前面,比方说 2(a),2(b).一次排序操作之后2(b),2(a).这就不是稳定的
发表于 2018-10-29 17:41:07 回复(0)