码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构:第8章学习小结

时间:2020-07-12 20:28:09      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:简单   性能   多个   归并   好的   选择排序   正序   快排   排列   

一、排序

概念:排序(Sorting)是按关键字的非递减或非递增顺序对一组记录重新进行排列的操作。

排序方式:

1.插入排序:①直接插入排序:是一种最简单的排序方法,其基本操作是将一条记录插入到已排好序的有序表中,从而得到一个新的、 记录数量增1的有序表。【一 一对比】

特点:  (I)稳定排序。

          (2)算法简便,且容易实现。
          (3)也适用千链式存储结构,只是在单链表上无需移动记录,只需修改相应的指针。
          (4) 更适合于初始记录基本有序(正序)的情况,当初始记录无序, n较大时,此算法时间复杂度较高,不宜采用。
②折半插入排序:在折半查找的前提下进行的排序操作【在已经排好的序列中插入】
特点:(l)稳定排序。
           (2)因为要进行折半查找, 所以只能用于顺序结构,不能用于链式结构。
           (3) 适合初始记录无序、n较大时的情况。
③希尔排序:直接插入排序, 当待排序的记录个数较少且待排序序列的关键字基本有序时,效率较高。希尔排序基于以上两点,从 “减少记录个数” 和 “序列基本有序” 两个方面对直接插入排序进行了改进。
特点:(1)记录跳跃式地移动导致排序方法是不稳定的。
          (2)只能用千顺序结构,不能用于链式结构。
         (3) 增量序列可以有各种取法,但应该使增量序列中的值没有除 l 之外的公因子,并且最后一个增量值必须等于1。
         (4) 记录总的比较次数和移动次数都比直接插入排序要少,n越大时,效果越明显。所以适合初始记录无序、n较大时的情况。
2.交换排序
①冒泡排序:是一种最简单的交换排序方法,它通过两两比较相邻记录的关键字,如果发生逆序,则进行交换,从而使关键字小的记录如气泡一般逐渐往上 "漂浮(左移),或者使关键字大的记录如石块一样逐渐向下 "坠落” (右移)。
特点:(1) 稳定排序。
           (2) 可用于链式存储结构。
           (3) 移动记录次数较多,算法平均时间性能比直接插入排序差。当初始记录无序,n较大时,此算法不宜采用。
②快速排序:是由冒泡排序改进而得的。 在 冒泡排序过程中, 只对相邻的两个记录进行比较, 因此每次交换两个相邻记录时只能消除一个逆序。 如果能通过两个(不相邻)记录的一次交换,消除多个逆序, 则会大大加快排序的速度。 快速排序方法中的一次交换可能消除多个逆序。
特点:(I) 记录非顺次的移动导致排序方法是不稳定的。
          (2)排序过程中需要定位表的下界和上界,所以适合用于顺序结构,很难用千链式结构。
          (3) 当n较大时,在平均情况下快速排序是所有内部排序方法中速度最快的一种,所以其适合初始记录无序、 n较大时的情况。
3.选择排序①简单选择排序也称作直接选择排序:以第一个数进行比较,然后找到里面最小的那一个数后,调换位置,紧接着第二个数开始
树形选择排序:又称锦标赛排序(Tournament Sort), 是一种按照锦标赛的思想进行选择排序的方法。【从树的叶子到根,两两比较,换位】
③堆排序:是一种树形选择排序,在排序过程中,将待排序的记录 r[l..n]看成是一棵完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系,在当前无序的序列中选择关键字最大(或最小)的记录。【调整堆、建初堆】
4.归并排序:将两个或两个以上的有序表合并成一个有序表
特点:(1)是稳定排序。
          (2)可用于链式结构, 且不需要附加存储空间,但递归实现时仍需要开辟相应的递归工作栈。
5.基数排序:多关键字的排序、链式基数排序
内容掌握程度比较低,在课余时间去理解

数据结构:第8章学习小结

标签:简单   性能   多个   归并   好的   选择排序   正序   快排   排列   

原文地址:https://www.cnblogs.com/000827lmk/p/13289564.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!