数据结构(C语言第2版) 课后习题答案之 第八章 排序

目录

第8章  排序

1.选择题

2.应用题

(1)设待排序的关键字序列为{12,2,16,30,28,10,16*,20,6,18},试分别写出使用以下排序方法,每趟排序结束后关键字序列的状态。

3.算法设计题

(1)试以单链表为存储结构,实现简单选择排序算法。

(2)有n个记录存储在带头结点的双向链表中,现用双向冒泡排序法对其按上升序进行排序,请写出这种排序的算法。

(3)设有顺序放置的n个桶,每个桶中装有一粒砾石,每粒砾石的颜色是红,白,蓝之一。

(4)编写算法,对n个关键字取整数值的记录序列进行整理,以使所有关键字为负值的记录排在关键字为非负值的记录之前,要求:

(5)借助于快速排序的算法思想,在一组无序的记录中查找给定关键字值等于key的记录。

(6)有一种简单的排序算法,叫做计数排序。这种排序算法对一个待排序的表进行排序,并将排序结果存放到另一个新的表中。

第8章  排序

1.选择题

(1)从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置上的方法,这种排序方法称为(   )

A.归并排序       B.冒泡排序        C.插入排序        D.选择排序

(2)从未排序序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端的方法,称为(   )

A.归并排序       B.冒泡排序        C.插入排序        D.选择排序

(3)对n个不同的关键字由小到大进行冒泡排序,在下列(   )情况下比较的次数最多。

A.从小到大排列好的                 B.从大到小排列好的    

 C.元素无序                         D.元素基本有序

(4)对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数最多为(   )

A.n+1            B.n               C.n-1              D.n(n-1)/2

(5)快速排序在下列(   )情况下最易发挥其长处。

A.被排序的数据中含有多个相同排序码   

B.被排序的数据已基本有序   

C.被排序的数据完全无序         

D.被排序的数据中的最大值和最小值相差悬殊

(6)对n个关键字作快速排序,在最坏情况下,算法的时间复杂度是(   )

A.O(n)           B.O(n2)            C.O(nlog2n)         D.O(n3) 

(7)若一组记录的排序码为(46, 79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为(   )

A.38,40,46,56,79,84               B.40,38,46,79,56,84

C.40,38,46,56,79,84               D.40,38,46,84,56,79

(8)下列关键字序列中,(   )是堆。

A.16,72,31,23,94,53               B.94,23,31,72,16,53

C.16,53,23,94,31,72               D.16,23,53,31,94,72

(9)堆是一种(   )排序。

A.插入         B.选择         C.交换      D.归并

(10)堆的形状是一棵(   )

A.二叉排序树          B.满二叉树         C.完全二叉树     D.平衡二叉树

(11)若一组记录的排序码为(46,79,56,38,40,84),则利用堆排序的方法建立的初始堆为(   )

A.79,46,56,38,40,84               B.84,79,56,38,40,46          

C.84,79,56,46,40,38               D.84,56,79,40,46,38

(12)下述几种排序方法中,要求内存最大的是(   )

A.希尔排序        B.快速排序         C.归并排序       D.堆排序

(13)下述几种排序方法中,(   )是稳定的排序方法。

A.希尔排序        B.快速排序         C.归并排序       D.堆排序

(14)数据表中有10000个元素,如果仅要求求出其中最大的10个元素,则采用(    )算法最节省时间。

A.冒泡排序        B.快速排序         C简单选择排序   D.堆排序

(15)下列排序算法中,(   )不能保证每趟排序至少能将一个元素放到其最终的位置上。

A.希尔排序        B.快速排序         C.冒泡排序       D.堆排序

2.应用

(1)设待排序的关键字序列为{12,2,16,30,28,10,16*,20,6,18},试分别写出使用以下排序方法,每趟排序结束后关键字序列的状态。

① 直接插入排序

② 折半插入排序

③ 希尔排序(增量选取5,3,1)

④ 冒泡排序

⑤ 快速排序

⑥ 简单选择排序

⑦ 堆排序

⑧ 二路归并排序

①直接插入排序

[2    12]   16   30   28   10   16*   20   6    18         

[2    12    16]  30   28   10   16*   20   6    18         

[2    12    16   30]  28   10   16*   20   6    18         

[2    12    16   28   30]  10   16*   20   6    18         

[2    10    12   16   28  30]   16*   20   6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

濯一一

你的鼓励:我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值