美文网首页
12_基本排序算法

12_基本排序算法

作者: 蕴重Liu | 来源:发表于2019-07-18 16:38 被阅读0次

冒泡排序

时间复杂度:O(n^2)

# O(n^2), n(n-1)/2 = 1/2(n^2 + n)
import random

def bubble_sort(seq):
    n = len(seq)
    for i in range(n-1):
        print(seq)
        for j in range(n-1-i):
            print(seq[j], seq[j+1])
            if seq[j] > seq[j+1]:
                seq[j], seq[j+1] = seq[j+1], seq[j]

def test_bubble_sort():
    seq = list(range(10))
    random.shuffle(seq)
    bubble_sort(seq)
    assert seq == sorted(seq)

if __name__ == '__main__':
    test_bubble_sort()

选择排序

时间复杂度:O(n(n-1)/2)
找到最小的元素插入迭代的起始位置,这样每个位置从它自己的位置开始它就是最小的了,一圈下来数组就有序了。 选择可以理解为 一个 0 到 n-1 的迭代,每次向后查找选择一个最小的元素。


def select_sort(seq):
    n = len(seq)
    for i in range(n-1):
        # 假定 最后一个是min
        min_idx = i
        # i 的后一位开始比较
        for j in range(i+1, n):
            if seq[j] < seq[min_idx]:
                min_idx = j
        if min_idx != i:
            seq[i], seq[min_idx] = seq[min_idx], seq[i]

def test_select_sort():
    seq = list(range(10))
    random.shuffle(seq)
    select_sort(seq)
    assert seq == sorted(seq)

if __name__ == '__main__':
    test_select_sort()

插入排序

时间复杂度:O(n^2)

def insertion_sort(seq):
    n = len(seq)
    for i in range(1, n):
        value = seq[i] # 保存当前位置的值,因为转移的过程中它的位置可能被覆盖
        pos = i
        while pos > 0 and value < seq[pos-1]:
            seq[pos] = seq[pos-1] # 如果前边的元素比它大,就让它一直前移
            pos -= 1
        seq[pos] = value

if __name__ == '__main__':
    seq = [2, 9, 5, 6, 3, 4]
    insertion_sort(seq)

相关文章

  • 12_基本排序算法

    冒泡排序 时间复杂度:O(n^2) 选择排序 时间复杂度:O(n(n-1)/2)找到最小的元素插入迭代的起始位置,...

  • 排序算法

    排序算法 排序是最基本的算法之一,常见的排序算法有插入排序、希尔排序、选择排序、冒泡排序、堆排序、归并排序及快速排...

  • Object-C实现常见十大算法(冒泡、选择、归并、双路、三路.

    我们经常会在时项目使用各种算法,比如排序.排序算法是最基本的算法之一. 排序算法可以分为内部排序和外部排序,内部排...

  • 2022-03-01

    1.排序算法: 到底什么是排序?-它是排列列表中项目顺序的算法。 重要的排序算法—— 冒泡排序:冒泡排序是最基本的...

  • 10分钟看懂10大经典算法(Swift代码实现)

    排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进...

  • 排序算法

    排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序。 内部排序是数据记录在内存中...

  • Python实现十大经典排序算法

    排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进...

  • 【算法-排序算法-基本排序算法】

    在快速排序算法总结的时候,介绍过基本排序算法包括选择排序、冒泡排序和插入排序。本章把他们三个放在一起总结一下 冒泡...

  • Swift的十大经典排序算法总结

    Swift的十大经典排序算法总结 排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排...

  • 冒泡排序算法

    冒泡排序(Bubble Sort)算法是所有排序算法中最简单、最基本的一种。冒泡排序算法的思路就是交换排序,通过相...

网友评论

      本文标题:12_基本排序算法

      本文链接:https://www.haomeiwen.com/subject/ghyllctx.html