冒泡排序,希尔排序,快速排序,二分排序。。。。。。。

------冒泡排序-----------
arr = [1, 3, 5, 9, 2, 4, 8]
for i in range(len(arr) - 1):
    for j in range(len(arr) - i - 1):
        if arr[j] > arr[j + 1]:
            arr[j], arr[j + 1] = arr[j + 1], arr[j]
print(arr)

-------希尔排序----------

def shell(arr):
    n = len(arr)
    h = n // 2 + 1
    while h >= 1:
        for i in range(h, n):
            j = i
            while j >= h and arr[j] < arr[j - 1]:
                arr[j], arr[j - 1] = arr[j - 1], arr[j]
                j -= h
        h = h // 2
    print(arr)
shell(arr)
------------快速排序-------------

def ks(L,low,high):
    i = low
    j = high
    if i >= j:
        return L
    key = L[i]
    while i < j:
        while i < j and L[j] >= key:
            j = j-1
        L[i] = L[j]
        while i < j and L[i] <= key:
            i = i+1
        L[j] = L[i]
    L[i] = key
    ks(L, low, i-1)
    ks(L, j+1, high)
    return L
a=[51,49,6,9,21,7,13,32,85]
ks(a,0,len(a)-1)
print(a)
--------二分排序------------

def binary(arr):
    for i in range(1,len(arr)):
        low=0
        high=i-1
        key=arr[i]
        while low<=high:
            mid=(low+high)//2
            if key<arr[mid]:
                high=mid-1
            else:
                low=mid+1
        for j in range(i-1,low-2,-1):
            arr[j+1]=arr[j]
        arr[low]=key
       # arr.pop(i)
       # arr.insert(low, key)
    print(arr)
arr=[1,7,2,5,9,3]
binary(arr)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值