使用Python编写的高效排序算法函数
发布时间:2023-07-02 08:00:14
在Python中,有很多排序算法可以选择。以下是几种高效的排序算法及其实现。
1. 冒泡排序(Bubble Sort):
冒泡排序是一种简单但效率较低的排序算法。它通过重复地交换相邻的元素来将较大的元素逐渐移到列表的尾部。
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
2. 选择排序(Selection Sort):
选择排序通过每次选择当前列表中的最小元素,并将其放置在已排序部分的末尾,从而逐步构建排序结果。
def selection_sort(arr):
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i + 1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
3. 插入排序(Insertion Sort):
插入排序通过将当前元素逐个与已排序的部分进行比较并插入到正确的位置来构建排序结果。
def insertion_sort(arr):
n = len(arr)
for i in range(1, n):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
return arr
4. 快速排序(Quick Sort):
快速排序是一种递归的排序算法,其通过选择一个基准元素并将列表分割为两个子列表,其中一个子列表的元素都小于等于基准元素,而另一个子列表的元素都大于基准元素。然后,对这两个子列表递归地进行排序。
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
5. 归并排序(Merge Sort):
归并排序是一种分治的排序算法,将列表递归地分割为更小的子列表,然后将这些子列表逐一合并以构建排序结果。
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = arr[:mid]
right = arr[mid:]
left = merge_sort(left)
right = merge_sort(right)
return merge(left, right)
def merge(left, right):
i = 0
j = 0
result = []
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result.extend(left[i:])
result.extend(right[j:])
return result
以上是几种高效的排序算法及其实现。根据应用场景和需求,可以选择适合的排序算法来提高代码的效率。
