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.归并排序

  • 归并排序与快排的差别:
  1. 归并排序比快排稳定
  2. 归并排序是将数组分为左右两边,利用先归并排序各自的数组,再将排好的数组比较,大的存入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=" ")
posted @   翻斗花园数据分析师  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示