📜  门|门 CS 1997 |问题 3(1)

📅  最后修改于: 2023-12-03 15:12:46.063000             🧑  作者: Mango

门|门 CS 1997 | 问题 3

本题是门|门 CS 1997的第三个问题。该题目要求对输入的一组整数进行排序,并输出排序结果。

输入格式

输入共两行,第一行为一个整数n,表示待排序的数字个数,接下来一行有n个整数。

样例输入:

5
2 3 1 4 5
输出格式

输出共一行,为排序后的n个数字,每个数字之间用空格隔开。

样例输出:

1 2 3 4 5
解题思路

这个问题使用一般的排序算法即可解决。最简单的算法是冒泡排序或选择排序,本文仅以选择排序为例。

  1. 遍历待排序的数字,将当前位置定为最小值的位置。
  2. 从当前位置之后的数字中找到最小值,如果这个最小值比当前位置的数字更小,则交换位置。
  3. 将当前位置之后的数字看做新的待排序数字,重复以上操作,直到所有数字都排好序为止。
代码实现
n = int(input())
data = list(map(int, input().split()))

for i in range(n):
    min_index = i
    for j in range(i+1, n):
        if data[j] < data[min_index]:
            min_index = j
    data[i], data[min_index] = data[min_index], data[i]

print(' '.join(map(str, data)))

以上代码实现了选择排序的逻辑,其中map函数用于将整数转换为字符串,方便join操作。