R7-2 m趟选择排序
先在第一行输入整数n和m,再在第二行输入n个整数构成的数列,要求利用选择排序(每趟排序最多交换一次)进行排序,并输出第m趟排序后的数列状况。请把选择排序定义为一个函数。
输入格式:
测试数据有多组,处理到文件尾。对于每组测试,先在第一行输入整数n和m(1<m<n<=40),再在第二行输入n个整数。
输出格式:
对于每组测试,输出m趟选择排序后的结果,每两个数据之间留一个空格。
输入样例:
6 3
3 5 1 2 8 6
4 3
9 8 7 6
输出样例:
1 2 3 5 8 6
6 7 8 9
说明:
这题描述和教材《程序设计竞赛入门(Python版)》上的代码不对应,这里要求每趟排序最多交换一次。
Python 解析:
def selection_sort(arr,m):
for i in range(m):
min_index = i
for j in range(i+1, len(arr)):
if arr[j] < arr[min_index]:
min_index = j
if i != min_index:
arr[min_index], arr[i] = arr[i], arr[min_index]
for i in range(0,len(arr)):
if(i!=len(arr)-1):
print(arr[i], end=' ')
else :
print(arr[i])
try:
while True:
str=input()
int_list = [int(x) for x in str.split()]
a, b = int_list[0], int_list[1]
arr = list(map(int, input().strip().split()))
selection_sort(arr, b)
except EOFError:
pass