排序算法杂记

本文详细探讨了各种排序算法,包括插入排序、归并排序、选择排序和堆排序等,解析了它们的工作原理和效率。特别指出,改良的冒泡排序在特定情况下能实现最快排序,而快速排序在平均情况下表现最优。此外,文章还涉及到了KMP算法、外部排序、B+树的插入操作以及Shell排序等,并讨论了不同排序算法在稳定性和适用场景上的特点。
摘要由CSDN通过智能技术生成

一、排序算法

1、精简排序,即一对数字不进行两次和两次以上的比较,以下是“精简排序”的是

正确答案: A B

A、插入排序
B、归并排序
C、选择排序
D、堆排序

插入排序:前面是有序的,后面的每一个元素与前面有序的元素比较,比较过的就是有序的了,不会再比较一次,例如:3 2 1 5
第一趟:【2,3,1,5】,2和3比较,3后移;第二趟:【1,2,3,5】,1和2,1和3比较,而2,3不会比较。
归并排序:每次合并后,内部都是有序的,内部的元素之间不用再比较
选择排序:每次在后面的元素中找到最小的,找最小元素的过程是在没有排好序的那部分进行,所以肯定会比较多次;
堆排序:每次要调整堆,举个例子试试,很容易看出来。

总之,只要是每次操作是在排好序的那部分元素之间操作,就符合,否则不是。

2、执行()操作时,需要使用队列做辅助存储空间
正确答案: B

A、查找哈希(Hash)表
B、广度优先搜索网
C、前序(根)遍历二叉树
D、深度优先搜索网

3、以下哪种排序算法对[1, 3, 2, 4, 5, 6, 7, 8, 9]进行排序最快
正确答案: A

A、改良的冒泡排序
B、快速排序
C、归并排序
D、堆排序

改良的冒泡排序,当一轮循环中没有交换就结束排序。只要2轮循环。

4、下面哪种排序的平均比较次数最少()
正确答案: D

插入排序
选择排序
堆排序
快速排序

虽然平均情况下快排和堆排时间复杂度都为O(nlogn),甚至堆排序的最坏情况下时间复杂度和辅助空间都优于快排。但是不能否认的是,虽然都是O(nlogn)级别,但是快排的常数因子要小于堆排序。实验可验。
这里写图片描述

5、KMP算法下,长为n的字符串中匹配长度为m的子串的复杂度为O(M+N)。

KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值