算法的稳定性
来源:互联网 发布:免费网络英语有没有 编辑:程序博客网 时间: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的相对位置就发生了改变,所以选择排序是不稳定的排序。
总结
虽然说证明一个排序不稳定非常简单,但是归根结底还是要落实到代码上,熟悉代码,了解每个排序的运算过程,才可以真正的理解。
阅读全文
0 0
- 算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 常用算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- 算法的稳定性
- 排序算法的稳定性
- 排序算法的稳定性
- word-ladder Java code
- Codeforces 115E Unambiguous Arithmetic Expression
- 【spring】BeanFactory 对比 ApplicationContext
- 设计模式-DEMO-PHP语言
- bzoj 1406: [AHOI2007]密码箱 数学
- 算法的稳定性
- Piggy-Bank HDU
- Assert statements
- 【网络通信】WSAStartup()函数,MAKEWORD的使用
- jvm调优
- 奇淫技巧
- 闲聊日谈 开篇
- 安卓动画全解:补间动画(视图动画)、布局动画、属性动画、逐帧动画。动画Animation属性、Alpha属性、Scale属性、Translate属性、Rotate属性,动画集AnimationSet
- Spring系列——@RequestMapping