排序原理

def mao(item):  # 冒泡排序
    for i in range(len(item)-1, 0, -1):
        count = 0
        for j in range(i):
            if item[j] > item[j + 1]:
                item[j], item[j + 1] = item[j + 1], item[j]
                count += 1
        if count == 0:
            break
if __name__ == '__main__':
    li = [6, 5, 4, 3, 2, 1]
    mao(li)
    print(li)

冒泡排序原理
重复遍历排序的序列,每次取两个元素进行比较,如果顺序错误就将其进行调换,重复进行,知道没有需要交换就结束遍历
名字来源:越小的元素经过交换会慢慢浮到元素的最顶端
最坏时间复杂度:O(n2)
最好时间复杂度:O(n)
稳定型


def xua(item): # 选择排序
    n = len(item)
    for j in range(n - 1):
        mix = j
        for i in range(j + 1, n):
            if item[i] < item[mix]:
                mix = i
        item[j], item[mix] = item[mix], item[j]

if __name__ == '__main__':
    item = [6, 5, 4, 3, 2, 1]
    xua(item)
    print(item)
选择排序原理
遍历没有排序的序列,取到最小的,放到序列起始端,然后再次遍历没有排序的序列,再次找到最小的放到已排序序列后面,依次循环完成排序操作
最坏时间复杂度O(n2)
最优时间复杂度O(n2)
稳定性:稳定


def cha(item): # 插入排序
    n = len(item)
    for j in range(1, n):
        for i in range(j, 0, -1):
            if item[i] < item[i - 1]:
                item[i], item[i - 1] = item[i - 1], item[i]
            else:
                break

if __name__ == '__main__':
    item = [6, 5, 4, 3, 2, 1]
    cha(item)
    print(item)
插入排序原理
它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入
最坏时间复杂度O(N2)
最好时间复杂度O(N)
稳定型

猜你喜欢

转载自blog.csdn.net/xiao_xia_ming/article/details/82050466