内容正文:
5.3 运用典型算法 - 任务1:运用排序算法
(一)单项选择题答案
1. B 2. C 3. A 4. B 5. A 6. B 7. B 8. A 9. A 10. B
11. B 12. A 13. A 14. B 15. B 16. C 17. A 18. A 19. D 20. C
(二)填空题答案
1. 降序
2. 末尾(或开头)
3. 合适
4. 原地
5. 不会
(三)简答题答案
1. 选择排序基本步骤:
- 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
- 从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。
- 重复第二步,直到所有元素均排序完毕。
2. 相同点:都是简单排序算法,时间复杂度均为O(n²)。不同点:选择排序是每次选择最小元素交换到前面,插入排序是每次将一个元素插入到已排序序列中。
3. 稳定排序:如果两个相等的元素在排序前后的相对位置不变,则该排序算法是稳定的。插入排序是稳定排序。
(四)程序填空题答案
1. i, j, a[min_index], a[i]
2. >, key
(五)编程题答案
1. 程序示例:
python
def bubble_sort(lst):
n = len(lst)
for i in range(n-1):
for j in range(n-1-i):
if lst[j] > lst[j+1]:
lst[j], lst[j+1] = lst[j+1], lst[j]
return lst
2. 程序示例:
python
lst = []
for i in range(10):
lst.append(int(input("请输入整数:")))
n = len(lst)
for i in range(n-1):
min_index = i
for j in range(i+1, n):
if lst[j] < lst[min_index]:
min_index = j
lst[i], lst[min_index] = lst[min_index], lst[i]
print(lst)
学科网(北京)股份有限公司
$
5.3 运用典型算法 - 任务1:运用排序算法
(一)单项选择题(20题)
1. 排序算法的目的是( )
A. 查找数据
B. 将数据按一定顺序排列
C. 删除重复数据
D. 计算数据统计值
2. 下列哪种排序属于简单排序算法( )
A. 快速排序
B. 归并排序
C. 选择排序
D. 堆排序
3. 选择排序的基本思想是( )
A. 每次选择最小元素放到前面
B. 相邻元素比较交换
C. 分治法
D. 递归排序
4. 对n个元素进行选择排序,需要比较( )次
A. n
B. n²
C. nlog₂n
D. 2n
5. 插入排序的基本思想是( )
A. 将元素插入已排序序列
B. 选择最小元素
C. 分而治之
D. 构建堆结构
6. 下列哪种情况适合使用插入排序( )
A. 数据量很大
B. 数据基本有序
C. 需要稳定排序
D. 对稳定性没有要求
7. Python中列表使用( )表示
A. 小括号()
B. 中括号[]
C. 大括号{}
D. 尖括号<>
8. 列表的索引从( )开始
A. 0
B. 1
C. -1
D. 任意
9. 向列表末尾添加元素的方法是( )
A. append()
B. insert()
C. add()
D. push()
10. 在列表指定位置插入元素的方法是( )
A. append()
B. insert()
C. add()
D. push()
11. 下列代码的作用是( )
python
a = [5, 2, 8, 1]
a.sort()
A. 对列表降序排序
B. 对列表升序排序
C. 反转列表
D. 随机排序
12. sorted()函数与sort()方法的区别是( )
A. sorted()返回新列表,sort()修改原列表
B. sorted()修改原列表,sort()返回新列表
C. 两者都修改原列表
D. 两者都返回新列表
13. 降序排序需要设置参数( )
A. reverse=True
B. reverse=False
C. order="desc"
D. order="asc"
14. 选择排序的时间复杂度是( )
A. O(n)
B. O(n²)
C. O(nlog₂n)
D. O(2ⁿ)
15. 插入排序的时间复杂度是( )
A. O(n)
B. O(n²)
C. O(nlog₂n)
D. O(2ⁿ)
16. 下列哪种排序是稳定的( )
A. 选择排序
B. 快速排序
C. 插入排序
D. 堆排序
17. 冒泡排序的基本思想是( )
A. 相邻元素比较交换
B. 选择最小元素
C. 插入到已排序序列
D. 分而治之
18. 对[3, 1, 4, 2]进行升序排序,第一轮选择排序后为( )
A. [1, 3, 4, 2]
B. [1, 2, 4, 3]
C. [1, 3, 2, 4]
D. [3, 1, 2, 4]
19. 对[3, 1, 4, 2]进行升序排序,第一轮插入排序后为( )
A. [1, 3, 4, 2]
B. [1, 2, 4, 3]
C. [1, 3, 2, 4]
D. [3, 1, 4, 2]
20. Python中列表的排序方法sort()是( )排序
A. 选择排序
B. 插入排序
C. 快速排序
D. 归并排序
(二)填空题(5题)
1. 排序算法是将一组数据按照指定的顺序进行排列的算法,常见的顺序有升序和______。
2. 选择排序的基本思想是每次从待排序的数据中选择最小(或最大)的元素,放到已排序序列的______。
3. 插入排序的基本思想是将待排序的数据插入到已排序序列的______位置。
4. 在Python中,列表的sort()方法是对列表进行______排序。
5. sorted()函数返回一个新的排序列表,而原列表______改变。
(三)简答题(3题)
1. 简述选择排序算法的基本步骤。
2. 比较选择排序和插入排序的异同。
3. 什么是稳定排序?插入排序是稳定排序吗?
(四)程序填空题(2题)
1. 以下是用选择排序对列表进行升序排序的程序,请补充完整:
python
a = [5, 2, 8, 1, 9]
n = len(a)
for i in range(n-1):
min_index = ______
for j in range(i+1, n):
if a[j] < a[min_index]:
min_index = ______
a[i], a[min_index] = ______, ______
print(a)
2. 以下是用插入排序对列表进行升序排序的程序,请补充完整:
python
a = [5, 2, 8, 1, 9]
n = len(a)
for i in range(1, n):
key = a[i]
j = i - 1
while j >= 0 and a[j] ______ key:
a[j+1] = a[j]
j = j - 1
a[j+1] = ______
print(a)
(五)编程题(2题)
1. 编写一个函数,使用冒泡排序算法对列表进行排序。
2. 编写一个程序,输入10个整数,使用选择排序算法对它们进行升序排序并输出。
学科网(北京)股份有限公司
$