分享两个之前写出来的Demo代码,另外分享一个视频,图示化展示了排序的过程,觉得挺有帮助的
冒泡排序
def bubble_sort(arr):
length = len(arr)
for i in range(length):
stop = False
for j in range(0, length - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
stop = True
if not stop:
break
return arr
# 在这个冒泡排序的实现中,我们通过比较相邻元素,如果前一个元素大于后一个元素,则交换它们的位置。外层循环控制排序的趟数,内层循环控制每一趟中的比较次数。通过这样的比较和交换操作,较大的元素会逐渐"浮"到数组的末尾,从而实现排序。
# 需要注意的是,冒泡排序是一种简单但效率较低的排序算法,它的时间复杂度为O(n^2),其中n是数组的长度。对于较大规模的数组,其他更高效的排序算法(如快速排序、归并排序等)可能更为适合。
if __name__ == '__main__':
aa = [1, 53, 12, 11, 23, 45, 80, 66]
print(bubble_sort(aa))
快速排序
def quick_sort(arr):
length = len(arr)
if length <= 1:
return arr
point = arr[(length // 2)]
left = [x for x in arr if x < point]
middle = [x for x in arr if x == point]
right = [x for x in arr if x > point]
return quick_sort(left) + middle + quick_sort(right)
# 示例
# 在这个快速排序的实现中,我们首先选择数组中的一个元素作为“pivot”(枢纽元素),然后将数组分成三个部分:小于pivot的元素构成一个子数组left,等于pivot的元素构成一个子数组middle,大于pivot的元素构成一个子数组right。
# 然后,分别对左右两个子数组进行递归排序,并最终将排序好的left、middle和right拼接在一起,得到最终的有序数组。
# 快速排序的时间复杂度通常是O(n log n),其中n是数组的长度。它是一种高效的排序算法,适用于大规模数据的排序。
if __name__ == '__main__':
input_list = [64, 34, 25, 12, 22, 11, 90]
sorted_list = quick_sort(input_list)
print("排序后的数组:", sorted_list)
评论区