冒泡排序&选择排序&插入排序

Posted bethuel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序&选择排序&插入排序相关的知识,希望对你有一定的参考价值。

跟随视频学习了一些常见的排序,把自己第二天能理解的记录下来,万一以后忘记了呢?

def linear_search(li, target):
    """
    线性查找
    """
    for ind, tar in enumerate(li):
        if tar == target:
            return ind
        else:
            return None


def binary_search(li, target):
    """
    二分查找,注意mid+-1,既提高速度,又与while的=相照应,才能找到列表最后一个值
    :param li:列表
    :param target:要查找的元素
    :return: 目标元素的下标
    """
    low = 0
    high = len(li) - 1
    while low <= high:
        print("low = %s, high = %s" % (low, high))
        sleep(5)
        mid = (low + high) // 2
        if li[mid] == target:
            return mid
        elif li[mid] > target:
            high = mid - 1
        else:
            low = mid + 1

    else:
        return None


def Bubble_sort(li):
    """
    冒泡排序,change加入:若两次遍历无交换,则数列已经有序,故提前结束
    :param li:
    :return:
    """
    for i in range(len(li) - 1):
        change = None
        for j in range(len(li) - i - 1):
            if li[j] < li[j + 1]:
                li[j], li[j + 1] = li[j + 1], li[j]
                change = True

        if not change:
            break


def Select_sort_simple(li):
    """
    选择排序,简单模式  缺点:需要两个列表,所占空间加倍
    :param li:
    :return:
    """
    li_tar = []
    for i in range(len(li)):
        tmp = min(li)
        li_tar.append(tmp)
        li.remove(tmp)
    return li_tar


def Select_sort(li):
    """
    选择排序,在一个数列中进行
    :param li:
    :return:
    """
    for i in range(len(li) - 1):
        min_loc = i
        for j in range(i + 1, len(li)):
            if li[j] < li[min_loc]:
                li[j], li[min_loc] = li[min_loc], li[j]


def Insert_sort(li):
    """
    插入排序
    :param li:
    :return:
    """
    for i in range(1, len(li)):
        tmp = li[i]
        j = i - 1
        while j >= 0 and li[j] > tmp:
            li[j+1] = li[j]
            j = j - 1
        li[j+1]  = tmp

 

以上是关于冒泡排序&选择排序&插入排序的主要内容,如果未能解决你的问题,请参考以下文章

排序算法整理:冒泡排序堆排序插入排序归并操作快速排序希尔排序选择排序

算法思想-冒泡&快速排序

Java版算法思想(排序)选择&冒泡&快排

Java版算法思想(排序)选择&冒泡&快排

js实现,归并排序,快速排序;插入排序,选择排序,冒泡排序

PHP--冒泡选择插入排序法