排序算法之冒泡排序
def bubble_sort(arr):
length = len(arr)
for index in range(length):
for i in range(1, length - index):
if arr[i - 1] > arr[i]:
arr[i - 1], arr[i] = arr[i], arr[i - 1]
return arr
以下是对代码的详细解释:
def bubble_sort(arr)::定义一个名为bubble_sort的函数,它接受一个列表arr作为参数。length = len(arr):初始化一个变量length,它表示列表的长度。for index in range(length)::这是外层循环,遍历整个列表。for i in range(1, length - index)::这是内层循环,它从第二个元素开始,一直遍历到列表的末尾减去当前外层循环的索引。这是因为每次外层循环后,列表的最后index个元素已经排好序了,所以不需要再比较。if arr[i - 1] > arr[i]::如果当前元素比它的前一个元素大,就交换它们的位置。arr[i - 1], arr[i] = arr[i], arr[i - 1]:交换元素位置,确保较大的元素向后移动。return arr:排序完成后,函数返回排序后的列表。
总的来说,冒泡排序算法通过多次比较和交换相邻元素的方式,将列表中的元素按照升序排列。这段代码的时间复杂度为 O(n^2),其中 n 是列表的长度,因为它需要两层嵌套循环来比较元素。尽管它不是最有效的排序算法,但它在小型数据集上表现良好。
排序算法之快速排序
def quick_sort(arr):
if len(arr) <= 1:
return arr
length = len(arr)
pivot = arr[length // 2]
left = [x for x in arr if x < piovt]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > right]
return quick_sort(left) + middle + quick_sort(right)
以下是对代码的详细解释:
def quick_sort(arr)::定义一个名为quick_sort的函数,它接受一个列表arr作为参数。if len(arr) <= 1: return arr:这是一个基本情况检查。如果列表为空或只有一个元素,它已经排序好了,所以直接返回该列表。length = len(arr):获取列表的长度。pivot = arr[length // 2]:选择列表中间的元素作为基准值(pivot)。left = [x for x in arr if x < pivot]:创建一个新的列表left,其中包含所有小于基准值的元素。middle = [x for x in arr if x == pivot]:创建一个新的列表middle,其中包含所有等于基准值的元素。right = [x for x in arr if x > pivot]:创建一个新的列表right,其中包含所有大于基准值的元素。return quick_sort(left) + middle + quick_sort(right):递归地对left和right列表进行快速排序,并将结果与middle列表拼接在一起返回。最终得到的是一个排序后的列表。
这种算法的平均时间复杂度是 O(nlogn),其中 n 是列表的长度。快速排序在实践中非常高效,尤其是在处理大型数据集时。