python实现经典排序

 

冒泡排序

def bubble (arr):
    flag=False
    for j in range(len(arr)-1):
        for i in range(len(arr)-1-j):
            if arr[i]>arr[i+1]:
                arr[i],arr[i+1] = arr[i+1],arr[i]
                flag=True
        if not flag:
            return arr
    return arr

选择排序

def chooice(arr):
    lg=len(arr)

    for j in range(lg-1):
        min=j
        for i in range(j+1,lg):
            if arr[min]>arr[i]:
                min=i

        arr[min],arr[j]=arr[j],arr[min]
    return arr

插入排序

def insert_order(arr):
    for i in range(1,len(arr)):
        j=i-1
        while j>=0 :
            if arr[j+1]<arr[j]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
                j=j-1

快排

def get_mid(arr,left,right):
    mid=arr[left]
    while left<right:
        while left<right and arr[right]>=mid:
            right-=1
        arr[left]=arr[right]
        while left<right and arr[left]<=mid:
            left+=1
        arr[right] = arr[left]
    arr[right]=mid
    return right


def quick_sort(arr,left,right):
    if left > right:
        return
    par=get_mid(arr,left,right)
    quick_sort(arr,left,par-1)
    quick_sort(arr,par+1,right)

二分查找

def binary_search(arr,v):
    mid=len(arr)//2
    if arr[mid]==v:
        return True
    if len(arr)==1:
        return False
    if arr[mid]>v:
        return binary_search(arr[:mid],v)
    else:
        return binary_search(arr[mid+1:],v)

 

posted on 2019-06-25 22:20  Orvis  阅读(121)  评论(0编辑  收藏  举报

导航