python 排序方式 冒泡,选择,插入,希尔排序,快速排序,归并排序

本人初学小白,如有问题,请大佬不吝赐教!!!

'''
#冒泡排序
def bubble_sort(nums):
    for i in range(len(nums)-1):
        for j in range(len(nums)-1-i):
            if nums[j]>nums[j+1]:
                nums[j],nums[j+1]=nums[j+1],nums[j]
    return nums
h=bubble_sort([1,3,5,7,2,4,6,8])
'''
'''
#选择排序
def select_sort(nums):
    for i in range(len(nums)-1):
        premin,preminindex=nums[i],i
        for j in range(i+1,len(nums)):
            if nums[j]<premin:
                premin,preminindex=nums[j],j
        if preminindex!=i:
            nums[preminindex],nums[i]=nums[i],premin
    return nums
h=select_sort([1,3,5,7,2,4,6,8])
'''
'''
#插入排序
def insert_sort(nums):
    for j in range(len(nums)):
        i=j
        while i>0:
            if nums[i]<nums[i-1]:
                nums[i],nums[i-1]=nums[i-1],nums[i]
                i-=1
            else:
                break
    return nums
h=insert_sort([1,3,5,7,2,4,6,8])
'''
'''
#希尔排序
def shell_sort(nums):
    n=len(nums)
    gap=n//2
    
    while gap>0:
        for j in range(gap,n):
            i=j
            while i>0:
                if nums[i]<nums[i-gap]:
                    nums[i],nums[i-gap]=nums[i-gap],nums[i]
                    i-=gap
                else:
                    break
        gap//=2
    return nums
h=shell_sort([1,3,5,7,2,4,6,8])
'''
'''
#快速排序
def quick_sort(nums,first,last):
    if first>=last:
        return
    low=first
    high=last
    mid_value=nums[first]
    while low<high:
        while low<high and nums[high]>=mid_value:
            high-=1
        nums[low]=nums[high]
        while low<high and nums[low]<mid_value:
            low+=1
        nums[high]=nums[low]
    # #从循环退出时,low==high
    nums[low]=mid_value
    #对low左边的列表执行快速排序
    quick_sort(nums,first,low-1)
    #对low右边的列表执行快速排序
    quick_sort(nums,low+1,last)
    return nums
h=quick_sort([1,3,5,7,2,4,6,8],0,7)
''' 
#归并排序
def merge_sort(nums):
    n=len(nums)
    mid=n//2
    if len(nums)<=1:
        return nums
    l_list=merge_sort(nums[:mid])
    r_list=merge_sort(nums[mid:])
    l_point,r_point=0,0
    res=[]
    while l_point<len(l_list) and r_point<len(r_list):
        if l_list[l_point]<r_list[r_point]:
            res.append(l_list[l_point])
            l_point+=1
        else:
            res.append(r_list[r_point])
            r_point+=1
    res+=l_list[l_point:]
    res+=r_list[r_point:]
    return res
h=merge_sort([1,3,5,7,2,4,6,8]) 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值