博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法的稳定性
阅读量:4169 次
发布时间:2019-05-26

本文共 846 字,大约阅读时间需要 2 分钟。

 若待排序的序列中,存在多个具有相同关键字的记录,经过排序, 这些记录的相对次序保持不变,则称该算法是稳定的;若经排序后,记录的相对 次序发生了改变,则称该算法是不稳定的。
  假定在待排序的记录序列中,存在多个具有相同键值的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ki=kj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。
  假定在待排序的记录序列中,存在多个具有相同键值的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ki=kj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。
  对于不稳定的排序算法,只要举出一个实例,即可说明它的不稳定性;而对于稳定的排序算法,必须对算法进行分析从而得到稳定的特性。需要注意的是,排序算法是否为稳定的是由具体算法决定的,不稳定的算法在某种条件下可以变为稳定的算法,而稳定的算法在某种条件下也可以变为不稳定的算法。
  例如,对于如下起泡排序算法,原本是稳定的排序算法,如果将记录交换的条件改成r[j]>=r[j+1],则两个相等的记录就会交换位置,从而变成不稳定的算法。
  void BubbleSort(int r[ ], int n){
  exchange=n; //第一趟起泡排序的范围是r[1]到r[n]
  while (exchange) //仅当上一趟排序有记录交换才进行本趟排序
  {
  bound=exchange; exchange=0;
  for (j=1; j if (r[j]>r[j+1]) {
  r[j]←→r[j+1];
  exchange=j; //记录每一次发生记录交换的位置
  }
  }
  }
  再如,快速排序原本是不稳定的排序方法,但若待排序记录中只有一组具有相同关键码的记录,而选择的轴值恰好是这组相同关键码中的一个,此时的快速排序就是稳定的。

转载地址:http://tbgxi.baihongyu.com/

你可能感兴趣的文章
嵌入式100题(71):什么是堆,栈,内存泄漏和内存溢出?
查看>>
嵌入式100题(73):死锁的原因、条件 创建一个死锁,以及如何预防
查看>>
嵌入式100题(60):系统调用的作用
查看>>
C语言基本概念归纳
查看>>
初识单片机
查看>>
在单片机上点亮LED
查看>>
初学定时器
查看>>
数码管
查看>>
单片机数码管消隐及中断
查看>>
C#串口调试助手代码
查看>>
学习DS1820随记
查看>>
初学C#之windowes窗口应用文件
查看>>
linux常用命令
查看>>
Linux之vim(一)vim简介
查看>>
进程间通信的方式简单解析————管道
查看>>
git学习笔录
查看>>
Activity类中7个与活动生命周期回调有关的方法
查看>>
jwt与token+redis,哪种方案更好用?
查看>>
Comparator接口
查看>>
在二叉树中找到一个节点的后继节点
查看>>