使用 Python 实现常见的排序算法函数
发布时间:2023-05-30 05:33:25
排序算法是计算机科学中最基本和基础的算法之一,其作用是对数据进行排序,使得数据更有序,可以方便的查找和处理。常见的排序算法有冒泡排序、插入排序、快速排序、归并排序等。本文将使用 Python 语言实现常见的排序算法函数。
一、冒泡排序
冒泡排序是一种简单的排序算法,其基本思想是依次比较相邻的两个元素,如果前一个元素比后一个元素大,则交换这两个元素的位置。该算法的时间复杂度为 O(n^2)。
Python 实现冒泡排序函数代码如下:
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
二、插入排序
插入排序是一种简单的排序算法,其基本思想是将要排序的数据分成两部分,有序部分和未排序部分,每次从未排序的数据中取出一个数据并插入到有序的数据中的合适位置。该算法的时间复杂度为 O(n^2)。
Python 实现插入排序函数代码如下:
def insert_sort(arr):
n = len(arr)
for i in range(1, n):
key = arr[i]
j = i-1
while j >= 0 and key < arr[j]:
arr[j+1] = arr[j]
j -=1
arr[j+1] = key
return arr
三、快速排序
快速排序是一种高效的排序算法,其基本思想是选择一个基准元素,把大于它的元素放在它的右侧,把小于它的元素放在它的左侧,然后对左右两个子序列递归进行排序。该算法的时间复杂度为 O(nlogn)。
Python 实现快速排序函数代码如下:
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[0]
left = [x for x in arr[1:] if x < pivot]
right = [x for x in arr[1:] if x >= pivot]
return quick_sort(left) + [pivot] + quick_sort(right)
四、归并排序
归并排序是一种分治算法,其基本思想是将要排序的数据分成两个子序列,对每个子序列递归进行排序,然后将排好序的两个子序列合并成一个有序序列。该算法的时间复杂度为 O(nlogn)。
Python 实现归并排序函数代码如下:
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):
result = []
i = j = 0
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 += left[i:]
result += right[j:]
return result
以上是四种常见的排序算法的 Python 实现函数,它们都是基于不同的算法思想,具有不同的时间复杂度和空间复杂度。在实际应用中,我们可以根据数据的特点选择最适合的排序算法,以达到提高排序效率的目的。
