赞
踩
冒泡排序是一种简单直观的排序算法,它重复地走访要排序的元素列,一次比较两个元素,如果它们的顺序错误就将它们交换过来。这个过程持续多次,每次都会将最大(或最小)的数"浮"到最后,因此称为冒泡排序。
下面是冒泡排序的基本步骤:
冒泡排序的时间复杂度为 O(n^2)
代码示例:
def bubble_sort(arr):
n = len(arr)
# 遍历所有数组元素
for i in range(n):
# 最后 i 个元素已经排序好了,不需要再次比较
for j in range(0, n-i-1):
# 如果当前元素大于下一个元素,则交换它们的位置
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
# 测试示例
arr = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(arr)
print("排序后的数组:", arr)
快速排序是一种高效的排序算法,它采用了分治法的思想。其基本思想是选择一个基准元素,然后将待排序的数组按照基准元素的大小分割成两个子数组,一个子数组中的元素都小于基准元素,另一个子数组中的元素都大于基准元素。然后对这两个子数组分别进行快速排序,直到整个数组排序完成。
下面是快速排序的基本步骤:
快速排序是一种原地排序算法,它不需要额外的空间来存储临时数组,因此具有较小的空间复杂度。其平均时间复杂度为 O(n log n),其中 n 是要排序的元素个数。但在最坏情况下(当选择的基准元素不幸地是数组中最大或最小的元素),时间复杂度为 O(n^2)。尽管如此,在大多数情况下,快速排序仍然是最快的通用排序算法之一。
代码示例:
def quick_sout(arr): left = [] right = [] if len(arr) <= 1: return arr else: curr = arr[0] # 选择第一个元素作为基准元素 for i in range(1,len(arr)): if arr[i] <= curr: left.append(arr[i]) # 小于等于基准元素的子数组 else: right.append(arr[i]) # 大于基准元素的子数组 return quick_sout(left) + [curr] + right arr = [64, 34, 25, 12, 22, 11, 90] sorted_arr = quick_sout(arr) print("排序后的数组:", sorted_arr)
归并排序是一种基于分治思想的排序算法,它将待排序的数组分成两个子数组,然后分别对这两个子数组进行排序,最后将两个已排序的子数组合并成一个有序的数组。归并排序的核心思想是将一个大问题拆分成多个小问题,分别解决,然后将解决后的结果合并起来。
下面是归并排序的基本步骤:
你可以将归并排序比作整理一副扑克牌的过程,将一副乱序的牌分成两堆,然后分别将这两堆牌整理成有序的序列,最后再将这两堆有序的牌合并起来
代码示例:
def merge_sort(arr): if len(arr) <= 1: return arr # 将数组分成两半 mid = len(arr) // 2 left_half = arr[:mid] right_half = arr[mid:] # 递归地对左右两半进行归并排序 left_half = merge_sort(left_half) right_half = merge_sort(right_half) # 合并排序好的左右两半 return merge(left_half, right_half) def merge(left, right): result = [] left_index, right_index = 0, 0 # 比较左右两半的元素,将较小的元素依次放入结果数组中 while left_index < len(left) and right_index < len(right): if left[left_index] < right[right_index]: result.append(left[left_index]) left_index += 1 else: result.append(right[right_index]) right_index += 1 # 将剩余的元素依次放入结果数组中 result.extend(left[left_index:]) result.extend(right[right_index:]) return result # 测试示例 arr = [64, 34, 25, 12, 22, 11, 90] sorted_arr = merge_sort(arr) print("排序后的数组:", sorted_arr)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。