数据结构排序总结
2018-01-16 21:55
246 查看
一、排序实质:消除逆序
二、排序算法分类:
内部排序:整个排序过程完全在内存中进行,称为内部排序。
外部排序:由于待排序记录数据量太大,内存无法容纳全部数据,排序需要借助外部存储设备才能完成,称为外部排序。
稳定排序和不稳定排序:假设Ki=Kj(1≤i≤n,1≤j≤n,i≠j),若在排序前的序列中Ri领先于Rj(即i<j),经过排序后得到的序列中Ri仍领先于Rj,则称所用的排序方法是稳定的 ;反之,当相同关键字的领先关系在排序过程中发生变化者,则称所用的排序方法是不稳定的。
1 快速排序(QuickSort)
快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。
(1)如果不多于1个数据,直接返回。
(2)一般选择序列最左边的值作为支点数据。
(3)将序列分成2部分,一部分都大于支点数据,另外一部分都小于支点数据。
2 归并排序(MergeSort)
归并排序先分解要排序的序列,从1分成2,2分成4,依次分解,分解到只有1个一组的时候,就可以排序这些分组,然后依次合并回原来的序列中,这样就可以排序所有数据。合并排序比堆排序稍微快一
点,但是需要比堆排序多一倍的内存空间,因为它需要一个额外的数组
3 堆排序(HeapSort)
堆排序适合于数据量非常大的场合。堆排序会将所有的数据建成一个堆,最大的数据在堆顶,然后将堆顶数据和序列的最后一个数据交换。接下来再次重建堆,交换数据,依次下去,就可以排序所有的数据。
4 插入排序(InsertSort)
插入排序通过把序列中的值插入一个已经排序好的序列中,直到该序列的结束。插入排序是对冒泡排序的改进。它比冒泡排序快2倍。一般不用在数据大于1000的场合下使用插入排序,或者重复排序超过
200数据项的序列。
5 冒泡排序(BubbleSort)
冒泡排序是最慢的排序算法。在实际运用中它是效率最低的算法。它通过一趟又一趟地比较数组中的每一个元素,使较大的数据下沉,较小的数据上升。它是O(n^2)的算法。
7 交换排序(ExchangeSort)和选择排序(SelectSort)
这两种排序方法都是交换方法的排序算法,效率都是O(n2)。在实际应用中处于和冒泡排序基本相同的地位。
二、排序算法分类:
内部排序:整个排序过程完全在内存中进行,称为内部排序。
外部排序:由于待排序记录数据量太大,内存无法容纳全部数据,排序需要借助外部存储设备才能完成,称为外部排序。
稳定排序和不稳定排序:假设Ki=Kj(1≤i≤n,1≤j≤n,i≠j),若在排序前的序列中Ri领先于Rj(即i<j),经过排序后得到的序列中Ri仍领先于Rj,则称所用的排序方法是稳定的 ;反之,当相同关键字的领先关系在排序过程中发生变化者,则称所用的排序方法是不稳定的。
1 快速排序(QuickSort)
快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。
(1)如果不多于1个数据,直接返回。
(2)一般选择序列最左边的值作为支点数据。
(3)将序列分成2部分,一部分都大于支点数据,另外一部分都小于支点数据。
2 归并排序(MergeSort)
归并排序先分解要排序的序列,从1分成2,2分成4,依次分解,分解到只有1个一组的时候,就可以排序这些分组,然后依次合并回原来的序列中,这样就可以排序所有数据。合并排序比堆排序稍微快一
点,但是需要比堆排序多一倍的内存空间,因为它需要一个额外的数组
3 堆排序(HeapSort)
堆排序适合于数据量非常大的场合。堆排序会将所有的数据建成一个堆,最大的数据在堆顶,然后将堆顶数据和序列的最后一个数据交换。接下来再次重建堆,交换数据,依次下去,就可以排序所有的数据。
4 插入排序(InsertSort)
插入排序通过把序列中的值插入一个已经排序好的序列中,直到该序列的结束。插入排序是对冒泡排序的改进。它比冒泡排序快2倍。一般不用在数据大于1000的场合下使用插入排序,或者重复排序超过
200数据项的序列。
5 冒泡排序(BubbleSort)
冒泡排序是最慢的排序算法。在实际运用中它是效率最低的算法。它通过一趟又一趟地比较数组中的每一个元素,使较大的数据下沉,较小的数据上升。它是O(n^2)的算法。
7 交换排序(ExchangeSort)和选择排序(SelectSort)
这两种排序方法都是交换方法的排序算法,效率都是O(n2)。在实际应用中处于和冒泡排序基本相同的地位。
相关文章推荐
- 数据结构各种排序java实现个人总结
- 数据结构面试之十二——排序3(排序算法归类、排序时间、空间复杂度、稳定性总结)
- 数据结构和算法总结(二):排序
- 数据结构总结之sort(排序)
- 数据结构几类排序的总结和完整代码 待续。。
- 数据结构的排序总结
- 算法与数据结构-常用排序算法总结1-比较排序
- 各种排序(数据结构复习之内部排序算法总结)
- 数据结构(二)排序总结
- 数据结构--排序总结
- 数据结构 排序 总结
- [数据结构] 九大基础排序总结与对比
- 数据结构-排序总结(冒泡 插入 选择 归并)
- [置顶] 数据结构知识点总结--排序
- 数据结构学习系类列十六-排序总结篇
- 数据结构排序之总结2
- 数据结构中的各种排序---总结篇
- 数据结构 JAVA描述(十三) 排序总结
- 数据结构复习 快速排序个人总结
- 数据结构之排序:排序基本概念和各种排序方法总结