标签:附加 查找 ima bsp 结构 选择排序 序列 span 决定
一、知识点
1、基本概念
排序:按关键字非递增或非递减顺序对一组记录重新排序的操作。
(1)内部排序与外部排序。
内部排序:整个排序过程不需要访问外存便能完成
外部排序:参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,需要借助外存
(2)排序稳定性
稳定:冒泡排序、插入排序、归并排序、基数排序
不稳定:选择排序、快速排序、希尔排序、堆排序
(3)排序算法好坏标准
①时间复杂度:关键字之间的比较和记录
②空间复杂度:由排序算法所需的辅助空间决定
二、基本排序方法
1、插入排序
基本思想:每一趟将一个待排序的记录,按其关键字的大小插入到已经排好序
的一组记录的适当位置上,直到所有待排序记录全部插入为止。
1.1直接插入排序
思路:将第i个记录的关键字,顺次与其前面记录的关键字进行比较,(按排序要求来操作)若其他关键字大于第i个的,则依次向后移动一个位置,直到遇见一个关键字a小于或者等于该关键字,此时a后空出一个位置,再将第i个记录插入空位置即可。
1.2折半插入排序
思路:利用“折半查找”来实现
1.3希尔排序
思路:分组排序;每趟取增量d,间隔为增量的为一组,分别进行直接插入排序, 待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。
2、交换排序
2.1 冒泡排序
思路:每趟对所有记录从左到右相邻两个记录进行比较,若不符合排序要求,则进行交换。
例:
2.2快速排序
思路:从待排序列中任取一个元素作为枢轴,所有比它小的元素一律前放,所有比它大的元素一律后放,形成左右两个子表;然后再对各子表重新选择枢轴并依此规则调整,直到每个子表的元素只剩一个。此时便为有序序列了。
例:
特点:当n较大时,其速度是内部排序中最快的。
3、选择排序
3.1简单选择排序
思路:数组a[1...n],第一趟从a[1]开始往后比较,找到最小的a[k]与a[1]比较交换,第二趟从a[2]开始往后找,规则同上,直到排序完。
3.2堆排序
1)调整堆 2)建初堆 3)堆排序实现
特点:只用于顺序结构
4、归并排序
思路:假设初始序列含有 n 个记录,首先将这 n 个记录看成 n 个有序的子序列, 每个子序列的长度为 1,然后两两归并,得到[2/n]个长度为 2(n 为奇数时,最后一个序列的长度为 1)的有序子序列。再两两归并...…如此重复,直至得到一个长度为n 的有序序列为止
特点:可用于链式结构,不需要附加存储空间,递归时仍要开辟递归工作栈。
三、心得体会
没想到这么快就一个学期上完了,这么快就要期末考了,这周写PTA的作业时,选择,判断题还是要想那么好一会呢,而且一些概念性的问题真是考验知识点掌握熟不熟悉啊。在写作业的代码时,已经两次发现出现段错误这种情况时不知道怎么改代码了,有时改了数组的长度也不行呢。最最最后,希望考试能顺顺利利吧。
标签:附加 查找 ima bsp 结构 选择排序 序列 span 决定
原文地址:https://www.cnblogs.com/luoly/p/13284827.html