python实现冒泡排序、快速排序
冒泡排序(BubbleSort)也是一种简单直观的排序算法。拿第一个和第二个进行相比,谁大就往后放。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。快速排序不稳定的排序、基准值越小,时间复杂度越高。方式二以数组的第一个作为基准数,相比之下可能会有点复杂。再对左右区间重复第二步,直到各区间只有
·
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))

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)