排序算法(Python)

选择排序

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

数字的字典序同理。结合字典序,大幅减少运算。

相关推荐
Anastasiozzzz2 小时前
深入研究Redis的ZSet底层数据结构:从 Ziplist 的级联更新到 Listpack 的完美救场
数据结构·数据库·redis
Eward-an2 小时前
LeetCode 1980 题通关指南|3种解法拆解“找唯一未出现二进制串”问题,附Python最优解实现
python·算法·leetcode
程序员酥皮蛋3 小时前
hot 100 第四十题 40.二叉树的层序遍历
数据结构·算法·leetcode
※DX3906※3 小时前
Java排序算法--全面详解面试中涉及的排序
java·开发语言·数据结构·面试·排序算法
木斯佳4 小时前
HarmonyOS 6实战:从爆款vlog探究鸿蒙智能体提取关键帧算法
算法·华为·harmonyos
Mr.朱鹏4 小时前
JVM-GC垃圾回收案例
java·jvm·spring boot·算法·spring·spring cloud·java-ee
WJSKad12355 小时前
【DepthPro】实战教程:单目深度估计算法详解与应用
算法
wzqllwy5 小时前
8 大经典排序算法(Java 实现):原理 + Demo + 核心分析
java·算法·排序算法
We་ct5 小时前
LeetCode 77. 组合:DFS回溯+剪枝,高效求解组合问题
开发语言·前端·算法·leetcode·typescript·深度优先·剪枝
重生之我是Java开发战士5 小时前
【递归、搜索与回溯】二叉树中的深度优先搜索:布尔二叉树,求根节点到叶节点数字之和,二叉树剪枝,验证二叉搜索树,第K小的元素,二叉树的所有路径
算法·深度优先·剪枝