Day 02
python 快排实现方法
经过晚上理解+自己背才完整敲出来快排,
代码如下:
def main():
n = int(input())
list_all = [int(x) for x in input().split()]
quick_sort(list_all,0,n-1)
for i in list_all:
print(i,end=' ')
def quick_sort(list_now,start,end):
if start>=end:
return
left,right = start,end
pivot = list_now[(start+end)//2]
while left<=right:
while left<=right and list_now[left]<pivot:
left+=1
while left<=right and list_now[right]>pivot:
right-=1
if left<=right:
list_now[left],list_now[right] =list_now[right],list_now[left]
left+=1
right-=1
quick_sort(list_now,start,right)
quick_sort(list_now,left,end)
main()
- 以上是python实现快速排序的方法
今天本来应该写0-1背包的代码的,但是理解不透彻,改明天完成
787.归并排序
- 归并排序与快排的差别:
- 归并排序比快排稳定
- 归并排序是将数组分为左右两边,利用先归并排序各自的数组,再将排好的数组比较,大的存入list1,指针+1
n = int(input())
list1 = list(map(int,input().split()))
def merge_sort(list1):
if len(list1)<=1:
return
mid = len(list1)//2
L = list1[:mid]
R = list1[mid:]
merge_sort(L)
merge_sort(R)
i,j,k=0,0,0
while i<len(L) and j<len(R):
if L[i]<=R[j]:
list1[k]=L[i]
i+=1
else:
list1[k]=R[j]
j+=1
k+=1
while i<len(L):
list1[k]=L[i]
k+=1
i+=1
while j<len(R):
list1[k]=R[j]
j+=1
k+=1
if __name__=="__main__":
merge_sort(list1)
for i in list1:
print(i,end=" ")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效