选择排序
python
def selection_sort(a):
n=len(a)
for i in range(n-1):
min=i
for j in range(i+1,n):
if a[j]<a[min]:
min=j
a[i],a[min]=a[min],a[i]
a=[125,142,23,654,454,1,456]
selection_sort(a)
print(a)
简而概之,逐个比较,交换顺序
结合字典序进行排序
python
import os
import sys
# 请在此输入您的代码
n=int(input()) # 输入要排序的数字数量
m=input().split() # 输入待排序的数字,以空格分隔,存储为列表 m
#输入
for i in range(n-1):
for j in range(i+1,n):
if m[i]+m[j]<m[j]+m[i]: # 如果将第 j 个数字与第 i 个数字连接后字典序更小
m[i],m[j]=m[j],m[i] # 则交换这两个数字的位置
# 采用交换排序的方式,将数字按照连接后的字符串字典序从小到大排序
print(''.join(m)) # 将排好序的数字列表连接成一个字符串并输出
# 一个输出方法
这道题我开始时考虑复杂了,考虑直接求出对应最高位数的数值,然后进行求解,忽略低位数值的大小影响,不如上面这种方法,直接进行全部位数排序。
此外,我还不知道可以从字典序的角度进行考虑
字典序(dictionary order),又称 字母序(alphabetical order),原意是表示英文单词在字典中的先后顺序,在计算机领域中扩展成两个任意字符串的大小关系。
英文中的 字母表(Alphabet) 按照如下的顺序排列:
ABCDEFG HIJKLMN OPQRST UVWXYZ
abcdefg hijklmn opqrst uvwxyz
数字的字典序同理。结合字典序,大幅减少运算。