python实现冒泡排序、快速排序

简介: python实现冒泡排序、快速排序

1、冒泡排序

冒泡排序(Bubble Sort)也是一种简单直观的排序算法。拿第一个和第二个进行相比,谁大就往后放。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。

def bubble_sort(array):
    for i in range(len(array) - 1):
        swap = False #为假,没有拍好序
        for j in range(len(array) - 1 - i):
            if array[j] > array[j + 1]:
                array[j], array[j + 1] = array[j + 1], array[j]
                swap = True
        if not swap:
            break
    return array
array = [100, 59, 20, 122, 10]
print(bubble_sort(array))

2 、快速排序

快速排序:不稳定的排序、基准值越小,时间复杂度越高。尽可能取中间值。

先从数列中取出一个数作为基准数。

分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

再对左右区间重复第二步,直到各区间只有一个数。

方式一:相比简单易理解。取最后一个作为基准数。

def quick_sort(lst):
    if len(lst) <= 1:
        return lst
    # 左子数组
    left = []
    # 右子数组
    right = []
    # 基准数  -- 取最后一个
    base = lst.pop()
    # 对原数组进行划分,小于基准数的放左边,大于等于基准数的放右边
    for i in lst:
        if i < base:
            left.append(i)
        else:
            right.append(i)
    # 递归调用
    return quick_sort(left) + [base] + quick_sort(right)
lst2 = [22, 58, 10, 66, 0, 6, 89, 98, 18, 39, 45, 76]
print(quick_sort(lst2)

方式二:以数组的第一个作为基准数,相比之下可能会有点复杂

def QuickSort(num):
    if len(num) <= 1: #边界条件
        return num
    key = num[0] #取数组的第一个数为基准数
    list = [] #定义空列表,分别存储小于/大于/等于基准数的元素
    right = []
    key1 = [key]
    for i in range(1,len(num)):#遍历数组,把元素归类到3个列表中
        # print(i)
        if num[i] > key:
            right.append(num[i])
        elif num[i] < key:
            list.append(num[i])
        else:
            key1.append(num[i])
    return QuickSort(list)+key1+QuickSort(right) #对左右子列表快排,拼接3个列表并返回
nums = [5,32,56,42,1,2,83,100]
print(QuickSort(nums))


相关文章
|
2月前
|
搜索推荐 算法 Python
python实现冒泡排序算法
python实现冒泡排序算法
36 0
|
2月前
|
搜索推荐 Python
PYTHON的快速排序
PYTHON的快速排序
23 0
|
16天前
|
搜索推荐 算法 Python
Python教程:使用Python实现冒泡排序和快速排序
排序算法根据其实现原理和效率可以分为多种类型,包括冒泡排序、选择排序、插入排序、归并排序、快速排序等。这些算法在不同的场景下具有不同的优劣势,需要根据实际需求选择合适的算法。
28 3
|
1月前
|
Python
【Python 训练营】N_17 冒泡排序
【Python 训练营】N_17 冒泡排序
13 2
|
2月前
|
搜索推荐 数据可视化 Python
Python应用实战,用动画生成冒泡排序的过程
冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
|
2月前
|
搜索推荐 Python
Python 冒泡排序:原理、使用场景与实现方法
本文主要介绍了Python 冒泡排序:原理、使用场景与实现方法
84 6
Python 冒泡排序:原理、使用场景与实现方法
|
2月前
|
算法 搜索推荐 C++
Python 快速排序:原理、使用场景与实现方法
本文主要介绍了Python 快速排序:原理、使用场景与实现方法
51 5
|
2月前
|
搜索推荐 Python
Python 实现冒泡排序算法
Python 实现冒泡排序算法
14 0
|
2月前
|
搜索推荐 Python
python实现快速排序算法。
【2月更文挑战第9天】【2月更文挑战第23篇】python实现快速排序算法。
|
2月前
|
搜索推荐 Python
python实现冒泡排序算法。
【2月更文挑战第8天】【2月更文挑战第20篇】python实现冒泡排序算法。