算法的稳定性

来源:互联网 发布:免费网络英语有没有 编辑:程序博客网 时间:2024/05/22 00:37


       在数据结构中,我们研究了算法的稳定性。其中,快速排序,堆排序以及直接选择排序都是不稳定的排序。那么为什么这些是不稳定的排序,判定标准又是什么。需要仔细了解一下。


     什么是稳定性?

       

       所谓稳定性,就是假定在待排序记录序列中,存在多个具有相同关键字的记录,如果经过排序以后,这些记录的相对次序保持不变,即原序列中,ri在rj之前,排完序之后,ri依然在rj之前,则称这种排序算法是稳定的,否则就是不稳定的。

       所以不稳定的的算法可以通过举例证明,稳定的算法就要进行算法分析了。


     举例分析


       先以冒泡排序为例,先用代码说明

for (int i = 0; i < arr.Length; i++)              {                  for (int j = i+1; j < arr.Length; j++)                  {                      //如果后面的数小于前面的数                      if (arr[j]< arr[i])                      {                          //交换                          temp = arr[j];                          arr[j] = arr[i];                          arr[i] = temp;                        }                  }              }  
        可以看到,冒泡排序是把大的元素往后调,小的元素往前调。比较都发生在相邻的两个元素之间,如果两个元素相等,是不会发生交换的,所以相同元素的前后顺序没有改变,所以冒泡排序是稳定的排序。


       再说选择排序,选择排序最重要的思想,就是假设某个数是最小的or最大的,它是给某个位置选择无序区元素中最小的那个。可以先举个例子,比如5 2 5 4 1 这个序列,选择排序会假设2是最小的,然后拿他和别的数去比,找到一个最小的,放到2所在的位置。所以在这个排序中,第一趟的时候5会和1交换,两个5的相对位置就发生了改变,所以选择排序是不稳定的排序。

       

     总结

       虽然说证明一个排序不稳定非常简单,但是归根结底还是要落实到代码上,熟悉代码,了解每个排序的运算过程,才可以真正的理解。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 信长之野望14没有剧情触发怎么办 玩cf手游手机屏幕摩擦力大怎么办 网吧有战地1没有橘子平台怎么办 俩人打仗了对方想讹我怎么办 环世界模组装多了打不开怎么办 手机百度云视频播放画面太小怎么办 ps文件说数据似乎已经损坏怎么办 百度云中的压缩包下载的很慢怎么办 游戏压缩出现未知错误或损坏怎么办 百度云里的压缩包解压后损坏怎么办 联创打印时显示压缩文件失败怎么办 电脑的软件打开出现未知格式怎么办 图片只突出人物边上全黑怎么办 合金机兵存档密码忘了怎么办 手机网页验证码无法加载插件怎么办 绝地求生次激战场机型不支持怎么办 木茷生存中文版安装包损坏了怎么办 手机下载软件显示安装包损坏怎么办 不小心把qq图片删了怎么办 奶水不足宝宝不好好吸奶怎么办 膀胱切除前列腺切除阴茎不硬怎么办 小孩的睾丸睾丸碰肿了怎么办 怎么判断小孩子的睾丸没下来怎么办 怀孕39周腰酸屁股酸疼该怎么办 我儿子18岁睾丸筋鼓起来怎么办 去医院检查说精子跑的慢怎么办 多囊卵巢综合症引起屁股增大怎么办 蚊子咬了肿了挠破了流水怎么办 血糖高引发的睾丸一直烂怎么办? 被洪水淹过的猪后期怎么办 做睾丸阴囊彩超阴茎突然勃起怎么办 阴茎冠状沟皮肤感染总不愈合怎么办 不小心咬到孩子破皮了怎么办 小孩子不小心碰到脸黑了一块怎么办 眼睛不小心碰到了里面红了怎么办 八个月宝宝睾丸还沒掉下来怎么办 孩子背部皮肤有一块皮肤很脏怎么办 洗浴种心搓背老板不给发工资怎么办 半个月小鸡屁骨下垂眼睛紧闭怎么办 在学校走廊把老师撞倒了怎么办 裤衩给孩子买的有点肥怎么办