排序稳定性stable

stable排序

O(n^2): InsertionSort,BubbleSort

O(nlgn): MergeSort

O(n+k): CountSort, RadixSort

non-stable排序

O(n^2): SelectionSort

O(nlgn): QuickSort

时间: 2024-10-28 16:21:30

排序稳定性stable的相关文章

普林斯顿大学算法课 Algorithm Part I Week 3 排序稳定性 Stability

稳定性(Stability):先按性质A排序,再按性质B排序,性质B相同的那些项是否仍然是按性质A排序的? 一个稳定的排序,相同值的元素应仍保持相对顺序(relative order) 稳定的算法:插入排序.Mergesort等 不稳定的算法:选择排序:Shellsort等

内部排序算法的稳定性

1.排序 排序是计算机程序设计中的一个重要操作,因此学习和研究各种排序算法是一个重要的课题. 2.排序种类 根据排序记录的数量和排序过程中的存储器不同,可以将排序分为内部排序和外部排序. 内部排序:指的是将带排序记录存放到计算机内存中进行排序的过程. 外部排序:指的是带排序的记录数量很大,以至于内存一次不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程. 3.排序稳定性 关于排序的稳定性:如果排序前2个相等的数在序列的前后位置顺序和排序后它们两个的前后位置顺序相同,就是稳定的排序,否则就

排序的稳定性

什么是排序稳定性? 通俗地讲就是在排序前A的位置是 i ,B的位置是 j,此时 i < j,则如果在排序后A的位置还是在B之前,那么称它是稳定的. 它的好处是,如果排序算法是稳定的,那么第一个排序结果可以为另一个排序所用.比如基数排序,先按低位排序,逐次按高位排序,低位相同的元素其顺序在高位也相同时是不会改变的. 首先给出一张在前一个博客"时间复杂度入门理解"中出现过的一副图,给出相关排序的稳定性: 接下来,将解释图中某些排序是不稳定的的原因. I)为什么希尔排序不稳定? A:首

各种排序的稳定性,时间复杂度、空间复杂度、稳定性

各种排序的稳定性,时间复杂度.空间复杂度.稳定性总结如下图: 关于时间复杂度: (1)平方阶(O(n2))排序 各类简单排序:直接插入.直接选择和冒泡排序: (2)线性对数阶(O(nlog2n))排序 快速排序.堆排序和归并排序: (3)O(n1+§))排序,§是介于0和1之间的常数. 希尔排序 (4)线性阶(O(n))排序 基数排序,此外还有桶.箱排序. 关于稳定性: 稳定的排序算法:冒泡排序.插入排序.归并排序和基数排序 不是稳定的排序算法:选择排序.快速排序.希尔排序.堆排序 #inclu

数据结构——各排序算法的比较

1.从时间复杂度比较  从平均时间复杂度来考虑,直接插入排序.冒泡排序.直接选择排序是三种简单的排序方法,时间复杂度都为O(n2),而快速排序.堆排序.二路归并排序的时间复杂度都为O(nlog2n),希尔排序的复杂度介于这两者之间.若从最好的时间复杂度考虑,则直接插入排序和冒泡排序的时间复杂度最好,为O(n),其它的最好情形同平均情形相同.若从最坏的时间复杂度考虑,则快速排序的为O(n2),直接插入排序.冒泡排序.希尔排序同平均情形相同,但系数大约增加一倍,所以运行速度将降低一半,最坏情形对直接

八大排序算法

转载:http://blog.csdn.net/hguisu/article/details/7776068 目录(?)[+] 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序.堆排序或归并排序序. 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速

数据结构学习笔记——排序

1. 分类 2. 7种内排序算法的各种指标 排序方法 平均情况 最好情况 最坏情况 辅助空间 稳定性 移动次数的平均情况 移动次数的最好情况 移动次数的最坏情况 冒泡排序 O(n2) O(n) O(n2) O(1) 稳定 O(n2) 0 O(n2) 简单选择排序 O(n2) O(n2) O(n2) O(1) 稳定 O(n) 0 O(n) 直接插入排序 O(n2) O(n) O(n2) O(1) 稳定 O(n2) O(n) O(n2) 希尔排序 O(nlogn)~O(n2) O(n1.3) O(n

计数排序及其扩展思路

(1)原理和代码以及时间复杂度分析 1.计数排序的原理:设被排序的数组为A,排序后存储到B,C为临时数组.所谓计数,首先是通过一个数组C[i]计算大小等于i的元素个数,此过程只需要一次循环遍历就可以:在此基础上,计算小于或者等于i的元素个数,也是一重循环就完成.下一步是关键:逆序循环,从length[A]到1,将A[i]放到B中第C[A[i]]个位置上.原理是:C[A[i]]表示小于等于a[i]的元素个数,正好是A[i]排序后应该在的位置.而且从length[A]到1逆序循环,可以保证相同元素间

数据结构-各类排序算法总结[结局]

各类排序算法总结 五.分配类排序->基数排序: 基数排序是一种借助于多关键码排序的思想,是将单关键码按基数分成"多关键码"进行排序的方法.基数排序属于"低位优先"排序法,通过反复进行分配与收集操作完成排序. 对于数字型或字符型的单关键字,可以看成是由多个数位或多个字符构成的多关键字, 此时可以采用这种"分配-收集"的办法进行排序,称作基数排序法.其好处是不需要进行关键字间的比较. 例如:对下列这组关键字{278, 109, 063, 930