(你的排序学的如何?)排序专项练习

1.当待排序记录已经从小到大排序或者已经从大到小排序时,快速排序的执行时间最省()

A.    对

B.    错

答案:B

根据快排的特点可知,快速排序基本有序情况下效率最低,在基本无序情况下效率最高。

2.以下排序中时间复杂度最差的是

A.    归并排序

B.    选择排序

C.   希尔排序

D.   堆排序

答案:B


排序方法


平均时间


最好时间


最坏时间


桶排序(不稳定)


O(n)


O(n)


O(n)


基数排序(稳定)


O(n)


O(n)


O(n)


归并排序(稳定)


O(nlogn)


O(nlogn)


O(nlogn)


快速排序(不稳定)


O(nlogn)


O(nlogn)


O(n^2)


堆排序(不稳定)


O(nlogn)


O(nlogn)


O(nlogn)


希尔排序(不稳定)


O(n^1.25)


冒泡排序(稳定)


O(n^2)


O(n)


O(n^2)


选择排序(不稳定)


O(n^2)


O(n^2)


O(n^2)


直接插入排序(稳定)


O(n^2)


O(n)


O(n^2)

3.最坏情况下 insertsort, quick sort ,merge sort的复杂度分别是多少?

A.     O(n*n),O(nlogn),O(n*n)

B.    O(n*n),O(n*n),O(nlogn)

C.   O(n*n),O(nlogn),O(nlogn)

D.   O(nlogn),O(nlogn),O(nlogn)

答案:B

要注意,快排在最坏情况下复杂度为O(n*n),而合并排序不受初始状态有序程度的影响。

4.设某文件经内排序后得到100个初始归并段(初始顺串),若使用多路归并排序算法,且要求三趟归并完成排序,问归并路数最少为

A.    8

B.    7

C.   6

D.   5

答案:D

5^3=125>100

5.将一个从大到小的数组,用以下排序方法排序成从小到大的,()最快。

A.     插入排序

B.    冒泡排序

C.   快速排序

D.   堆排序

答案:D

上述情况对于插入排序、冒泡排序、快速排序都是最差情况

6.快速排序方法在()情况下最不利于发挥其长处

A.    要排序的数据量太大

B.    要排序的数据中含有多个相同值

C.   要排序的数据个数为奇数

D.   要排序的数据已基本有序

答案:D

可以参考1题

7.下列排序算法中,在待排序数据有序的情况下,花费时间最多的是()

A.    快速排序

B.    希尔排序

C.   冒泡排序

D.   堆排序

答案:A

可以参考1题

8.    下列排序算法中,其时间复杂度和记录的初始排列无关的是

A.    插入排序

B.    堆排序

C.   快速排序

D.   冒泡排序

答案:B

9.有字符序列(Q,H,C,Y,P,A,M,S,R,D,F,X),新序列(F,H,C,D,P,A,M,Q,R,S,Y,X)是下列()排序算法一趟扫描结果。

A.     堆排序

B.    快速排序

C.   希尔排序

D.   冒泡排序

答案:B

感觉这种题基本上都是在说快排。。。

10.在待排序的元素序列基本有序的前提下,效率最高的排序方法是?

A.     插入排序

B.    选择排序

C.   快速排序

D.   归并排序

答案:A(注意和第5题对比着看)

时间: 2024-10-10 22:38:57

(你的排序学的如何?)排序专项练习的相关文章

《OD学算法》排序

1. 交换排序 (1)冒泡排序 (2)快速排序 2. 选择排序 (1)直接选择排序 (2)堆排序 3. 插入排序 (1)直接插入排序 (2)希尔排序 4. 合并排序 (1)合并排序 5. 非比较排序 (1)计数排序 (2)桶排序 (3)基数排序

大话桶排序 基数排序和计数排序

一:计数排序 (1)当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 Θ(n + k).计数排序不是比较排序,排序的速度快于任何比较排序算法.由于用来计数的数组C的长度取决于待排序数组中数据的范围(等于待排序数组的最大值与最小值的差加上1),这使得计数排序对于数据范围很大的数组,需要大量时间和内存.例如:计数排序是用来排序0到100之间的数字的最好的算法,但是它不适合按字母顺序排序人名.但是,计数排序可以用在基数排序中的算法来排序数据范围很大的数组. (2)算法的步骤如下: 1.

C++ STL中Map的按Key排序和按Value排序

原文  http://blog.csdn.net/iicy266/article/details/11906189 map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择. 我们这样定义,map<string, int>,其中学生姓名用string类型,作为Key:该学生的成绩用int类型,作为value.这样一来,我们可以根据学

排序算法之希尔排序

文章转载自http://www.cnblogs.com/chengxiao/ 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法.希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一.本文会以图解的方式详细介绍希尔排序的基本思想及其代码实现. 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序:随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组

排序的概念(选择排序1)

                                     排序(比较与交换) 排序的稳定性:     排序之前,R[i]在R[j]前面,排序后,R[i]还在R[j]前面,则这个排序方法是稳定的.否则这个排序  方法是不稳定的.  外排序:----依赖--->内排序      待排序的数据元素数量很大,整个序列的排序过程不可能在内存中完成.  内排序:      整个排序过程不需要访问外存便能完成.                                       排序的

HashMap按键排序和按值排序

一.简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map.map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等.其中这四者的区别如下(简单介绍): HashMap:我们最常用的Map,它根据key的HashCode 值来存储数据,根据key可以直接获取它的Value,同时它具有很快的访问速度.HashMap最多只允许一条记录的key值为Null(多条会覆盖);允许多条记录的Value为 Null.非同步的. T

最快最简单的排序算法:桶排序

在我们生活的这个世界中到处都是被排序过的.站队的时候会按照身高排序,考试的名次需要按照分数排序,网上购物的时候会按照价格排序,电子邮箱中的邮件按照时间排序……总之很多东西都需要排序,可以说排序是无处不在.现在我们举个具体的例子来介绍一下排序算法. 首先出场的我们的主人公小哼,上面这个可爱的娃就是啦.期末考试完了老师要将同学们的分数按照从高到低排序.小哼的班上只有5个同学,这5个同学分别考了5分.3分.5分.2分和8分,哎考的真是惨不忍睹(满分是10分).接下来将分数进行从大到小排序,排序后是8

排序 一些基本的排序

*/--> pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;}

插入排序 | 冒泡排序 | 希尔排序 | 堆排序 | 快速排序 | 选择排序 | 归并排序

以下是最近学习各种算法的代码实现: #include <stdlib.h> #include <stdio.h> #include <time.h> #include <limits.h> typedef int EleType; typedef int (*CompFunc)(void *,void *); int IntComp(void * a,void *b) { if(*(int *)a > *(int *)b) return 1; if(*