题解 | #输入n个整数,输出其中最小的k个#
输入n个整数,输出其中最小的k个
https://www.nowcoder.com/practice/69ef2267aafd4d52b250a272fd27052c
n, k = input().split() a = input().split() for i in range(int(n)-1, int(n)-1-int(k), -1): flag = 0 for j in range(int(n)-1, int(n)-i-1, -1): if int(a[j]) < int(a[j-1]): a[j-1], a[j] = a[j], a[j-1] flag = 1 if flag == 0: break for i in range(int(k)): print(a[i], end=' ') # print(a) # 其实这道题就是用冒泡排序,不过与平时的不同点在于之前用冒泡都是把大的数往左边“浮”起来, # 这次则是需要把小的数往右边“浮”起来。所以,"for i ..."这行代码需要执行的次数就等于k的值, # 因为整个列表每排一次,都会有个此时的最小值往左边“浮”。第一遍,列表里最小的值浮到最左边的a[0], # 然后对a[1:](即a[1]到最末尾)再进行一次排序,第二小的值浮到了a[1]上...循环往复。 # 所以,题目需要输出几个小值,我们排几次就好了,k和flag这两个变量的存在能有效减少复杂度。