DS_习题_第九章_排序

8.在一个具有n个节点的有序单链表中,插入一个新节点并依然有序的时间复杂度是___

A..O1, B.O(n) C.(n*n) D.O(n;og2 n)

clip_image001

由图值知:将这个有序数插入即可,若有n个节点,共需插入的时间次数为n 次,故时间复杂度为O(1);

 

1.已知序列(17,18, 60,40,7,32,73,65,85),请给出采用冒泡排序方法对该序列作升序 排序时每一趟的结果。

解: 17,18,60,40,7,32,73,65,85

采用冒泡排序:(升序)

实际上冒泡排序在每趟中确定了一个有序序列

2-已知序列(503,87,512,61,908,170,897,275,653,462)请给出采用堆排序的方法对该系列作升序排列时的每趟结果。

解:

image

假设是大根堆://左右全小根。

堆排序的方法包括两种过程如下:建立堆和堆排序:

1.建立堆:这里是大根堆:

按层次存储到对应的二叉树中;2分总数逆向,顺序子数移动:

//待补充

 

 

3-已知序列(503,87,512,61,908,170,897,275,653,462)请给出采用基数排序的方法对该系列作升序排列时的每趟结果。

解:

基数排序的实质是:按各位,十位,百位,由低到高顺序排列(当两数相等时,按题意进行排列)。

按各位排列:

0 1 2 3 4 5 6 7 8 9

170 61 512 503 275 87 908

462 653 897

按各位排列:

170,61,462,512,503,653,275,87,897,908

按十位排列:

0 1 2 3 4 5 6 7 8 9

503 51 2 653 61 170 87

908 462 275 897

顺序为:503,908,512,653,51,61,462,170,275,87,897

按百位排列:

0 1 2 3 4 5 6 7 8 9

087 170 275 462 503 653 897 908

06 512

排列顺序为; 61,87,170,275,462,,512,503,653,897,908

 

4-已知序列(503,87,512,61,908,170,897,275,653,462)请给出采用快速排序方法排序的方法对该系列作升序排列时的每趟结果:

解:快速排序方法的实质是:插入顺序必是最后顺序;

image

 

image

转载于:https://my.oschina.net/u/578921/blog/178366

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值