zoukankan      html  css  js  c++  java
  • 排序法

    二分法

    # 递归
    lst = [2, 3, 5, 10, 15, 16, 18, 22, 26, 30, 32, 35, 41, 42,
           43, 55, 56, 66, 67, 69, 72, 76, 82, 83, 88]
    
    
    def func(num, left, right):
        if left <= right:
            mid = (right + left) // 2
            if lst[mid] > num:
                right = mid - 1
                return func(num, left, right)
            if lst[mid] < num:
                left = mid + 1
                return func(num, left, right)
            if lst[mid] == num:
                print("找到此数字")
                return mid
        else:
            print("列表中没有此数字")
            return -1
    
    func(69, 0, len(lst)-1)
    
    # 循环
    left = 0
    right = len(lst) - 1
    num = int(input("请输入查找的数字:"))
    while left <= right:
        mid = (left + right)//2
        if lst[mid] < num:
            left = left + 1
        if lst[mid] > num:
            right = right -1
        if lst[mid] == num:
            print("找到此数字")
            break
    else:
        print("列表中没有次数字")
    二分法

    冒泡排序法

    lst = [666, 555, 444, 333, 2, 1]
    n = 0  # 用于比较是否完成(len(lst)-1)!此交换
    m = 1  # 用于每轮比较都比上上轮少一次
    sum = 0  # 比较循环的总数
    l = 1  # 计算循环的总数
    k = 0  # k 与 k+1 位置的比较交换
    while l < len(lst):  # sum为需要交换的最多次数=(len(lst)-1)!
        sum = sum + l
        l += 1
    
    while n < sum:
        while k < len(lst) - m:
            # 第一轮需要比较len(lst)-1次,下一轮需要比较len(lst)-2次.以此类推
            if lst[k] > lst[k + 1]:
                lst[k], lst[k + 1] = lst[k + 1], lst[k]
                k += 1             # 大于交换 k+1
            else:
                k += 1  # 小于或等于不变 k+1
            n += 1      # 循环次数加1
        m += 1          # 下一轮的比较次数减一次  len(lst) - m
        k = 0           # k置零从头开始比较冒泡
    print(lst)
    冒泡

     快排

    def quicksort(list):
        if len(list) < 2:
            return list
        else:
            mid_num = list[0]
            large_num = [i for i in list[1:] if i > mid_num]
            sm_num = [i for i in list[1:] if i <= mid_num]
            result = quicksort(sm_num) + [mid_num] + quicksort(large_num)
            return result

     Python数据类型操作的时间复杂度

    list

     

    dict

    set

  • 相关阅读:
    在Ubuntu上安装Hadoop(集群模式)
    Node.js v0.10.8 发布
    设置 Sublime Text 的 Python 开发环境
    jQuery 1.10.0 和 2.0.1 发布
    openSUSE 13.1 Milestone 2 发布
    mochad 0.1.6 发布,TCP 网关守护进程
    JPPF 3.3.2 发布,Java 并行处理框架
    PyCharm 又一强大Python IDE
    AntiXSS 支持Html同时防止XSS攻击
    (原创)攻击方式学习系列(总)
  • 原文地址:https://www.cnblogs.com/jiaqi-666/p/9483385.html
Copyright © 2011-2022 走看看