2024.8.29 Python,排序算法,列表的append规则

1.append和+=

res=[]
nums1=[1,2,3]
res.append(nums1[1])
print(res)#输出[2]
res.append([nums1[1]])
print(res)#输出[[2]]
res.append(nums1[1:2])
print(res)#输出[[2]]
res.append(nums1[1:3])
print(res)#输出[[2,3]]
res+=nums1[1:3]
print(res)#输出[2,3]

也就是说,nums1[1:3]这样的子串仍然是列表

2.归并排序

from typing import List
class Solution:
    def mergeSorted(self,nums1:List[int],nums2:List[int])->List[int]:
        index1,index2=0,0
        res=[]
        while index1<len(nums1) and index2<len(nums2):
                if nums1[index1]<nums2[index2]:
                     res.append(nums1[index1])
                     index1+=1
                else:
                     res.append(nums2[index2])
                     index2+=1
        res+=nums1[index1:] if index1<len(nums1) else nums2[index2:]
        return res
    def sortList(self,nums:List[int])->List[int]:
        if len(nums)<=1:
            return nums
         
        mid=len(nums)//2
        
        left=self.sortList(nums[0:mid])
        right=self.sortList(nums[mid:])

        return self.mergeSorted(left,right)

这是我手写的,夸一下自己

3.快速排序:

def quick_sort(arr:List[int])->List[int]:
    n=len(arr)
    if n<=1:
        return arr
    mid_index=n//2
    left,mid,right=[],[],[]
    for i in range(n):
        if arr[i]<arr[mid_index]:
            left.append(arr[i])
        elif arr[i]==arr[mid_index]:
            mid.append(arr[i])
        else:
            right.append(arr[i])
    left=quick_sort(left)
    right=quick_sort(right)
    return left+mid+right
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值