思路:

  1. 首先读取输入的整数n和正整数序列。
  2. 将序列中的每个数拆分为个位数和剩余的数,使用元组进行存储。
  3. 对序列进行排序,首先按照个位数进行排序,相同个位数的按照剩余的数进行排序。
  4. 将排序后的序列输出。

代码实现如下:

n = int(input())
nums = list(map(int, input().split()))

# 拆分每个数的个位数和剩余的数,使用元组进行存储
nums = [(num % 10, num) for num in nums]

# 按照题目要求对序列进行排序
nums.sort(key=lambda x: (x[0], x[1]))

# 输出排序后的序列
for num in nums:
    print(num[1], end=' ')

时间复杂度分析:

  1. 读取输入的整数n和正整数序列,时间复杂度为O(n)。
  2. 拆分每个数的个位数和剩余的数,时间复杂度为O(n)。
  3. 对序列进行排序,时间复杂度为O(nlogn)。
  4. 输出排序后的序列,时间复杂度为O(n)。 综上,总的时间复杂度为O(nlogn)
题目描述对于给定的正整数序列按照个位数从小到大排序个位数相同的按照本身大小从小到大排序。输入格式第一行1个整数n表示序列的大小。 0 n ≤ 1000 第二行n个正整数表示序列的每个数每个数不大于100000000。输出格式输出按照题目要求排序后的序列

原文地址: http://www.cveoy.top/t/topic/iC5U 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录