欢迎访问宙启技术站
智能推送

如何使用Python实现排序功能

发布时间:2023-12-25 23:07:16

在Python中,可以使用多种算法实现排序功能,包括冒泡排序、选择排序、插入排序、归并排序和快速排序等。下面将分别介绍这些排序算法的实现原理,并给出示例代码。

1. 冒泡排序(Bubble Sort):

冒泡排序通过相邻元素的比较和交换,将最大(或最小)的元素逐渐“冒泡”到数组的末尾。具体实现如下:

def bubble_sort(arr):
    n = len(arr)
    for i in range(n-1):
        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

# 示例
arr = [4, 2, 1, 3, 5]
sorted_arr = bubble_sort(arr)
print(sorted_arr)  # 输出:[1, 2, 3, 4, 5]

2. 选择排序(Selection Sort):

选择排序将数组分为已排序和未排序两个部分,每次从未排序部分选择最小(或最大)的元素,交换到已排序部分的末尾。具体实现如下:

def selection_sort(arr):
    n = len(arr)
    for i in range(n-1):
        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

# 示例
arr = [4, 2, 1, 3, 5]
sorted_arr = selection_sort(arr)
print(sorted_arr)  # 输出:[1, 2, 3, 4, 5]

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

# 示例
arr = [4, 2, 1, 3, 5]
sorted_arr = insertion_sort(arr)
print(sorted_arr)  # 输出:[1, 2, 3, 4, 5]

4. 归并排序(Merge Sort):

归并排序通过将数组递归地分成两个子数组,然后将两个有序子数组合并成一个有序数组。具体实现如下:

def merge_sort(arr):
    if len(arr) <= 1:
        return arr
    
    mid = len(arr) // 2
    left = merge_sort(arr[:mid])
    right = merge_sort(arr[mid:])
    
    i, j, k = 0, 0, 0
    while i < len(left) and j < len(right):
        if left[i] < right[j]:
            arr[k] = left[i]
            i += 1
        else:
            arr[k] = right[j]
            j += 1
        k += 1
    
    while i < len(left):
        arr[k] = left[i]
        i += 1
        k += 1
    
    while j < len(right):
        arr[k] = right[j]
        j += 1
        k += 1
    
    return arr

# 示例
arr = [4, 2, 1, 3, 5]
sorted_arr = merge_sort(arr)
print(sorted_arr)  # 输出:[1, 2, 3, 4, 5]

5. 快速排序(Quick Sort):

快速排序通过选择一个基准元素,将小于基准的元素放在左边,将大于基准的元素放在右边,然后递归地对左右两个子数组进行排序。具体实现如下:

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)

# 示例
arr = [4, 2, 1, 3, 5]
sorted_arr = quick_sort(arr)
print(sorted_arr)  # 输出:[1, 2, 3, 4, 5]

以上是常用的几种排序算法的Python实现,通过调用相应的函数,即可对任意列表进行排序。