Python实现冒泡选择插入快速排序

Posted iouwenbo的博客~

tags:

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

1. 冒泡排序

# 冒泡排序
# 需比较len(seq)-1轮。每轮在下标0到len(seq)-i-1的数中,每一个数与它后面一个数比较,大数后移(冒泡),每轮中最大的数冒泡排到本轮最后
def bubble_sort(seq):
    seq = copy.deepcopy(seq1
    for i in range(len(seq)-1):
        for j in range(len(seq)-i-1):
            if seq[j] > seq[j+1]:  # 相邻两数比较,大数后移
                seq[j], seq[j+1] = seq[j+1], seq[j]
    return seq

 

2. 选择排序

# 选择排序
# 需比较len(seq)-1轮。下标0到i的数已排好序,下标i的数与后面的数分别比较,选择出最小的数给seq[i]
def selection_sort(seq):for i in range(len(seq)-1):
        for j in range(i+1, len(seq)):
            if seq[i] > seq[j]:
                seq[i], seq[j] = seq[j], seq[i]
    return seq

 

3. 插入排序

# 插入排序
# 需比较len(seq)-1轮。下标0到i的数已排好序,下标i的数(val)与前面的每个数(从后往前)比较,并插入到比它大的数前面
def insert_sort(seq):for i in range(1, len(seq)):
        val = seq[i]
        idx = i
        while val < seq[idx-1] and idx > 0:
            seq[idx], seq[idx-1] = seq[idx-1], val
            idx -= 1
    return seq

 

4. 快速排序

# 快速排序1(用递归函数实现)
def quick_sort(seq):if len(seq) <= 1:
        return seq
    return quick_sort([s for s in seq[1:] if s < seq[0]]) + seq[0:1] + quick_sort([m for m in seq[1:] if m >= seq[0]])

# 快速排序2(用匿名函数实现)
qsort = lambda seq:         seq if len(seq) <= 1 else qsort(
                                      [item for item in seq[1:] if item <= seq[0]])                                       + [seq[0]]                                       + qsort([item for item in seq[1:] if item > seq[0]]
                                  )

 

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

冒泡选择插入希尔归并快速排序等python实现

[leetcode]排序算法(冒泡排序,选择排序,插入排序,快速排序,计数排序)

四种排序算法实现

几种排序方式的java实现(01:插入排序,冒泡排序,选择排序,快速排序)

python实现时间复杂度平均为N^2的冒泡选择插入排序

python实现时间复杂度平均为N^2的冒泡选择插入排序