刷题笔记 (二) :排序

1、冒泡排序:将最大值放到末尾,一直缩小范围到第一位

2、排序算法的稳定性是指经过排序之后,能使值相同的数据保持原顺序中的相对位置不变

解析:稳定性,就是指,不乱排序,很有规矩,能按照排序的算法执行,相异的数据排序正确,相同的数据之间的前后关系也能不会错位

3、常见的内部排序有:(并非所有排序都必须关键字比较)

  • 插入排序(直接插入排序):将待排序的数字逐渐插入到已排好序的元素序列中,需要关键字的比较。
  • 快速排序:通过一趟排序将待排序数列分割为两部分,一部分比基准值大,另一部分比基准值小,需要关键字的比较。
  • 选择排序(简单选择排序):从待排序序列中选择一个最大(或最小)的元素放在序列的首位置,直到所有的序列排列完成。需要关键字比较。
  • 归并排序:将序列先拆分为多个子序列,使子序列有序,再逐步合并,直至整个序列有序。需要关键字比较。
  • 冒泡排序:相邻元素逐个比较做交换。
  • 希尔排序:缩小增量排序,属于插入排序的一种。
  • 堆排序:大根堆的要求是每个节点的值都不大于其父节点的值,小根堆相反。

4、稳定的排序方法是折半插入排序和起泡排序

解析:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。
堆排序、快速排序、希尔排序、直接选择排序不是稳定的排序算法
基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。

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

6、若要求尽可能快地对序列进行稳定的排序,则应选归并排序 

解析:快速排序不稳定、起泡排序不快,只有归并排序较快较稳定

7、对10TB的数据文件进行排序,应使用的方法是归并排序

解析:外部排序指待排序文件较大,内存一次性放不下,需存放在外部介质中。外部排序通常采用归并排序法

8、在外排序过程中,对长度为n的初始序列进行"置换-选择"排序时,可以得到的最大初始有序段的长度为N

解析:
外部排序,置换选择,在内存区保存一段数字,每次弹出内存区中最小的数字(这个数字不能比已经弹出的最大数字大),加入一个新数字,当内存区中不存在比弹出序列中最大数字还大的数字,即内存区中的数字都比上一个弹出的数字小,分段。构造第二个段,以此类推。如果待排元素有序,则只有一个归并段。长度N。

9、关于快速排序:

  • 快速排序是基于比较的排序
  • 快速排序使用了分治的思想
解析:
 “挖坑填数+分治法”,首先令i =L; j = R; 将a[i]挖出形成第一个坑,称a[i]为基准数。然后j--由后向前找比基准数小的数,找到后挖出此数填入前一个坑a[i]中,再i++由前向后找比基准数大的数,找到后也挖出此数填到前一个坑a[j]中。重复进行这种“挖坑填数”直到i==j。再将基准数填入a[i]中,这样i之前的数都比基准数小,i之后的数都比基准数大。因此将数组分成二部分再分别重复上述步骤就完成了排序。

快排最好的情况是,每次正好中分,复杂度为O(nlogn)。最差情况,复杂度为O(n^2),退化成冒泡排序

10、采用递归方式对顺序表进行快速排序,递归次数与每次划分后得到的分区的处理顺序无关

解析:
快递排序的递归次数与元素的初始排列有关。如果每一次划分后分区比较平衡,则递归次数少;如果划分后分区不平衡,则递归次数多。但快速排序的递归次数与分区处理顺序无关,即先处理较长的分区或先处理较短的分区都不影响递归次数。

此外,可以形象地把快速排序的递归调用过程用一个二叉树描述,先处理较长或较短分区,可以想象为交换某一递归结点处的左右子树,这并不会影响树中的分支数。

11、快速排序算法:

先确定基准值,然后从后向前找比基准值小的数,找到后将其与比它小的数进行交换,然后从前向后找比基准值大的数,将其交换,周而复始,直到确定下基准值的位置

实例:使用快速排序算法对序列9,1,3,8,23,5,7,10,29,19进行排序,基准数取9,则第1趟排序后的结果为
解析:
9 1 3 8 23 5 7 10 29 19

7 1 3 8 23 5 9 10 29 19

7 1 3 8 9 5 23 10 29 19

7 1 3 8 5 9 23 10 29 19

12、有些排序算法在每趟排序过程中,都会有一个元素被放置在其最终的位置上,不会出现此情况的是希尔排序

排序:
希尔排序该方法实质上是一种分组插入方法。
其基本思想是先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。
希尔排序在稳定性上面来说是不稳定的,不能保证每次排序过程中,都会有一个元素放置在其最终的位置上面。

13、归并排序叙述:

  • 归并排序使用了分治策略的思想
  • 归并排序是稳定的

14、插入排序是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入的排序算法

15、在内部排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一趟排序。下列排序方法中,每一趟排序结束都至少能够确定一个元素最终位置的方法是:

  • 简单选择排序
  • 快速排序
  • 推排序
解析:
1、简单选择排序每次选择未排序列中的最小元素放入其最终位置。
2、快速排序每一趟排序结束后都将枢轴元素放到最终位置。
3、堆排序属于选择排序,每次都将大根堆的根结点与表尾结点交换,确定其最终位置。

16、对长度为n的线性表排序,在最坏情况下,比较次数:

  • 快速排序为n(n-1)/2
  • 冒泡排序为n(n-1)/2
  • 直接插入排序为n(n-1)/2
  • 堆排序为O(nlog2 n)

17、希尔排序每的最后一趟排序的地址增量一定是1

解析:增量gap=length/2,缩小增量继续以gap = gap/2的方式,这种增量选择我们可以用一个序列来表示,{n/2,(n/2)/2...1},称为增量序列

18、拓扑排序不进行AOE网排序,针对AOV网排序

---1:AOE网(Activity On Edge Network)是边表示活动的网,AOE网是带权有向无环图。

---2:在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,成这样的有向图为顶点表示活动的网,简称AOV网(activity on vertex network)。

对AOV网进行拓扑排序的基本思想是࿱

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值