一、排序算法
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字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法