Home 常见排序算法介绍(一)
Post
Cancel

常见排序算法介绍(一)

排序算法解析与 Python 示例

引言

在计算机科学中,排序是一个基本的操作,它可以使数据按特定的顺序排列。不同的排序算法具有不同的性能特点和适用场景。本文将介绍六种常见的排序算法,包括它们的原理和 Python 实现。

冒泡排序(Bubble Sort)

原理: 冒泡排序是一种简单的排序算法,它重复遍历列表,比较相邻元素并交换位置,使得最大的元素逐渐“冒泡”到最后。

Python 实现:

1
2
3
4
5
6
7
8
9
10
11
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]

# 使用示例
arr = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(arr)
print("排序后的数组:", arr)

选择排序(Selection Sort)

原理: 选择排序在未排序部分中选择最小元素,然后将其放在已排序部分的末尾,以此方式逐步构建排序结果。

Python 实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
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]

# 使用示例
arr = [64, 34, 25, 12, 22, 11, 90]
selection_sort(arr)
print("排序后的数组:", arr)

插入排序(Insertion Sort)

原理: 插入排序将列表分为已排序和未排序部分,逐个取未排序部分的元素插入到已排序部分的适当位置。

Python 实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
def insertion_sort(arr):
    for i in range(1, len(arr)):
        key = arr[i]
        j = i - 1
        while j >= 0 and key < arr[j]:
            arr[j + 1] = arr[j]
            j -= 1
        arr[j + 1] = key

# 使用示例
arr = [64, 34, 25, 12, 22, 11, 90]
insertion_sort(arr)
print("排序后的数组:", arr)

快速排序(Quick Sort)

原理: 快速排序是一种分治算法,通过选择一个基准元素,将数组分为小于和大于基准的两部分,然后递归地对这两部分进行排序。

Python 实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
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)

# 使用示例
arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = quick_sort(arr)
print("排序后的数组:", sorted_arr)
This post is licensed under CC BY 4.0 by the author.

数据结构介绍(二)

常见排序算法介绍(二)