栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 算法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 算法

1.汉诺塔

def hanoi(n, a, b, c):
    if n > 0:
        hanoi(n-1, a, c ,b)
        print('moving from {} to {}'.format(a, c))
        hanoi(n-1, b, a, c)

2.列表查找

def line_search(li, val):
    for index, x in enumerate(li):
        if x == val:
            #print(index)
            return index
    else:
        return None

3.二分查找

def bina_search(li, val):
    left = 0
    right = len(li) - 1
    while left <= right:
        mid = (left + right) // 2
        if li(mid) == val:
            return mid
        elif li(mid) > val:
            right = mid - 1
        else:
            left = mid + 1
    else:
        return None

4.冒泡排序

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

5.1选择排序

def select_sort(li):
    li_new = []
    for i in range(len(li)):
        min_val = min(li)
        li_new.append(min_val)
        li.remove(min_val)
    return li_new
        

5.2选择排序

def select_sort(li):
    for i in range(len(li)-1):
        min_loc = i
        for j in range(i+1, len(li)):
            if li(j) < li(min_loc):
                min_loc = j
        li[i], li[min_loc] = li[min_loc], li[i]

6.插入排序

def insert_sort(li):
    for i in range(1, len(li)):
        j = i - 1
        temp = li[i]
        while j >= 0 and li[j] > temp:
            li[j+1] = li[j]
            j -= 1
        li[j+1] = temp

7.快速排序

def partition(li, left, right):
    temp = li[left]
    while left < right:
        while left < right and li[right] >= temp:
            right -= 1
        li[left] = li[right]
        while left < right and li[left] <= temp:
            left += 1
        li[right] = li[left]
    li[left] = temp
    return left

def quick_sort(li, left, right):
    if left < right:
        mid = partition(li, left, right)
        quick_sort(li, left, mid-1)
        quick_sort(li, mid+1, right)
    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/529895.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号