python蓝桥杯 双向排序

这篇博客探讨了一种暴力排序数组的方法,通过处理数组切片来实现元素的增删。博主分享了代码实现,并针对不同情况进行了讨论,但遇到了超时问题。文章突出了对数组操作和排序算法的理解与实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先想法肯定是暴力sort,代码如下,稍微注意一下数组切片的索引问题(左闭右开):

n,m=list(map(int,input().split()))
s=[i+1 for i in range(n)]
l=[]
for i in range(m):
    tmp=list(map(int,input().split()))
    l.append(tmp)
# print(l)
for i in range(m):
    if(l[i][0]==0):
        tmp=l[i][1]
        s1=sorted(s[0:tmp],reverse=True)+s[tmp:]
        s=s1
    elif(l[i][0]==1):
        tmp=l[i][1]
        s1=s[:tmp-1]+sorted(s[tmp-1:])
        s=s1
for i in range(len(s)):
    print(s[i],end=' ')

 拿到了60分,后面的超时了,后续再继续学习。

### Python 蓝桥杯竞赛排序算法实现示例 #### 字母顺序升序排列 在蓝桥杯竞赛中,处理字符串列表并按字母顺序进行升序排列是一个常见需求。下面展示了如何利用Python内置的`sort()`函数来完成这一操作: ```python fruits = ['apple', 'Banana', 'cherry', 'date'] fruits.sort() print(fruits) # 输出: ['apple', 'Banana', 'cherry', 'date'] ``` 这段代码实现了对水果名称列表按照首字母大小写的敏感方式进行排序[^4]。 #### 使用自定义键进行排序 有时需要忽略大小写来进行更自然的语言排序。此时可以通过指定关键字参数`key=str.lower`让排序过程变得不区分大小写: ```python words = ["Alice", "bob", "Charlie", "david"] words.sort(key=str.lower) print(words) # 输出: ['Alice', 'bob', 'Charlie', 'david'] ``` 此方法通过转换所有比较项为小写字母形式从而达到无视原始字符大小写的效果。 #### 基于数值属性排序 当面对的对象具有可量化的特性时(比如成绩、年龄),可以根据这些特征值来进行排序。这里展示了一个简单的例子——对学生对象依据分数高低降序排列: ```python from operator import attrgetter class Student: def __init__(self, name, score): self.name = name self.score = score def __repr__(self): return f"{self.name}({self.score})" students = [ Student('张三', 89), Student('李四', 76), Student('王五', 92) ] sorted_students = sorted(students, key=attrgetter('score'), reverse=True) for student in sorted_students: print(student) # 输出: # 王五(92) # 张三(89) # 李四(76) ``` 上述实例说明了如何创建类并将其实例化后的对象放入列表内再调用`sorted()`函数配合`operator.attrgetter`工具以特定字段作为排序条件。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值