【练习】选择排序
项目简介
选择排序
知识模块
- Python 编程语言
知识点
- 列表操作
- 循环嵌套
- 判断
- 时间复杂度分析
- 变量
- 索引
受众
- 初级测试开发工程师
- 初级Python开发工程师
作业要求
编写一个Python程序,实选择速排序。
解题思路
-
首先,设置一个变量min_index用于记录当前循环中最小元素的索引。
-
外层循环从列表的第一个元素开始,依次遍历到倒数第二个元素。
-
内层循环从外层循环的下一个元素开始,依次遍历到最后一个元素。
-
在内层循环中,比较当前元素和最小元素,如果当前元素比最小元素小,则更新min_index为当前元素的索引。
-
内层循环结束后,将最小元素与外层循环的当前元素交换位置。
-
外层循环继续,重复步骤2-5,直到遍历到倒数第二个元素。
-
排序完成后,列表中的元素将按照从小到大的顺序排列。
完整代码
def xuanze():
data = [1,56,6,5,4,89,2]
length = len(data)
for i in range(length-1):
small = data[i]
for j in range(i+1,length):
if data[j]<small:
idx = j
data[idx],data[i] = data[i],data[idx]
return data
result = xuanze()
print(result)
代码讲解
-
首先,我们定义了一个函数
xuanze()
,函数内部创建了一个列表data
并初始化了一些数据。然后,我们获取了列表的长度,用变量length
保存。 -
接下来,我们使用两层循环实现选择排序的逻辑。外层循环从第一个元素遍历到倒数第二个元素,表示每次选择排序的起始位置。
-
内层循环从外层循环的下一个位置开始,依次遍历到列表的最后一个元素。内层循环的作用是找到未排序部分的最小值,并将其与当前起始位置的元素交换位置。
-
在内层循环中,我们使用变量
small
来记录当前未排序部分的最小值,并使用变量idx
来记录最小值的索引位置。 -
如果内层循环中遇到比
small
更小的元素,就更新idx
的值为该元素的索引。 -
在内层循环结束后,我们通过交换操作将最小值与当前起始位置的元素交换位置。
-
最后,当外层循环结束后,整个列表就会按照从小到大的顺序进行排列。
-
代码最后通过调用
xuanze()
函数,将排序后的结果赋值给变量result
,并使用print
语句输出排序结果。 -
运行以上代码,会输出
[1, 2, 4, 5, 6, 56, 89]
,表示列表data
已按照从小到大的顺序进行了排序。