首页 > 编程语言 > 详细

常用算法题

时间:2021-03-14 23:42:33      阅读:24      评论:0      收藏:0      [点我收藏+]

1、冒泡排序和快速排序

def maopaopaixu(a):
    for i in range(len(a) - 1):  # 这个循环负责设置冒泡排序进行的次数
        # 第一次排就能把最大的排到最后面,最后一个就不参与排序了
        # 第二次排需要的次数-1,能把第二大的排到倒数第二,倒数第二个就不参与排序了
        # 同理第三次、第四次
        for j in range(len(a) - i - 1):  # j为列表下标
            if a[j] > a[j + 1]:
                a[j], a[j + 1] = a[j + 1], a[j]
    return a


def quick_sort(data):
    """快速排序"""
    if len(data) >= 2:  # 递归入口及出口
        mid = data[len(data) // 2]  # 选取基准值,也可以选取第一个或最后一个元素(//取整除 - 返回商的整数部分(向下取整))
        left, right = [], []  # 定义基准值左右两侧的列表
        data.remove(mid)  # 从原始数组中移除基准值,如果不移除,list含有相同元素时则会陷入无限递归
        for num in data:
            if num >= mid:
                right.append(num)
            else:
                left.append(num)
        return quick_sort(left) + [mid] + quick_sort(right)
        # return quick_sort(left) + quick_sort(right)
    else:
        return data


if __name__ == __main__:
    a = [2, 1, 4, 5, 10, 11, 21, 34, 6, 6]
    print(maopaopaixu(a))
    print(quick_sort(a))

2、阶乘

def funa(a: int):
    if a < 1:
        print("数据错误")
        return
    if a == 1:
        return 1
    if a > 1:
        return a * funa(a - 1)


def funb(a: int):
    l = 1
    for i in range(1, a + 1):
        l = l * i
    return l


if __name__ == __main__:
    print(funa(6))
    print(funb(6))

3、反转

def fanzhuan1(a):
    if isinstance(a, str):
        l = ‘‘
        for i in range(len(a)):
            l = l + a[-(i + 1)]
        return l
    if isinstance(a, list):
        l = []
        for i in range(len(a)):
            l.append(a[-(i + 1)])
        return l


def fanzhuan2(a):
    return a[::-1]


if __name__ == __main__:
    a = "ksjdkjsd"
    print(fanzhuan1(a))
    print(fanzhuan2(a))
    a = [1, 2, 3, 4, 5]
    print(fanzhuan1(a))
    print(fanzhuan2(a))

4、数组移除元素,为什么-6没有移除我也不知道原因

def dellist1(a: list):
    for i in a:
        if i < 0:
            a.remove(i)
    return a


def dellist2(a: list):
    return [i for i in a if i > 0]


if __name__ == __main__:
    a = [1, 3, -3, 5, -4, -6, 10]
    print(dellist1(a))  # [1, 3, 5, -6, 10]
    print(dellist1(a))  # [1, 3, 5, 10]

5、字符串统计

str001 = "my love is you do you konw it ? do you love me ?"
list001 = str001.split( )
print(list001)
print(str001.count( ))
print("单词的总数为%s" % (len(list001)))  # 14
print("空格的总数为%s" % str001.count( ))  # 13
print("you的总数为%s" % (list001.count(you)))  # 3

 

常用算法题

原文:https://www.cnblogs.com/yinwenbin/p/14532809.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!