冒泡排序,快速排序

冒泡拍序

def bubble_sort(nums):
    for i in range(len(nums) - 1):
        for j in range(len(nums) - i - 1):
            if nums[j] > nums[j + 1]:
                nums[j], nums[j + 1] = nums[j + 1], nums[j]
    return nums

#冒泡排序优化
def bubble_sort2(nums):
    #比如说n个数,则只要进行n-1次冒泡
    for i in range(len(nums)-1):
        flag=False#设置一个交换标志位
        #j就是控制每一次具体的冒泡过程
        for j in range(len(nums)-i-1):
            if nums[j]>nums[j+1]:
                nums[j], nums[j + 1] = nums[j + 1], nums[j]
                flag=True
        if not flag:
            return nums
    return nums


if __name__ == "__main__":
    nums=[12,2,3,3,7]
   # print(bubble_sort(nums))

快速排序

def quick_sort(b):
    if len(b)<2:
        return b
    #选取继基准,中间的值
    mid=b[len(b)//2]
    #定义基准值左右两个数列
    left,right=[],[]
    #从原始数组中移除基准值
    b.remove(mid)
    for i in b:
        #大于基准值放右边
        if i>mid:
            right.append(i)
        else:
            left.append(i)
    #使用迭代进行比较
    return quick_sort(left)+[mid]+quick_sort(right)

 

posted @ 2020-08-12 20:17  程程111  阅读(98)  评论(0编辑  收藏  举报