排序算法概述
排序算法是计算机科学中用于将一组数据按照特定顺序重新排列的算法。常见的排序顺序包括升序和降序,排序算法广泛应用于数据库检索、数据分析、机器学习等领域。排序算法根据其时间复杂度和空间复杂度可以分为多种类型,包括比较排序和非比较排序。
常见排序算法分类
排序算法大致可分为两类:比较排序和非比较排序。比较排序通过比较元素的大小来决定它们的顺序,而非比较排序则不依赖元素间的比较。
比较排序
- 冒泡排序:通过多次遍历数组,每次比较相邻元素并交换它们的位置,将较大的元素逐步“冒泡”到数组末尾。
- 选择排序:每次遍历数组,选择最小(或最大)的元素,放到已排序部分的末尾。
- 插入排序:将未排序部分的元素逐个插入到已排序部分的适当位置。
- 归并排序:采用分治法,将数组分成两半,分别排序后再合并。
- 快速排序:通过选择一个基准元素,将数组分成两部分,一部分小于基准,另一部分大于基准,然后递归排序。
非比较排序
- 计数排序:适用于整数排序,通过统计每个元素的出现次数来排序。
- 桶排序:将元素分配到多个桶中,每个桶单独排序后再合并。
- 基数排序:按照数字的位数从低位到高位依次排序。
冒泡排序
冒泡排序是一种简单的排序算法,通过多次遍历数组,每次比较相邻元素并交换它们的位置,将较大的元素逐步“冒泡”到数组末尾。
时间复杂度:平均和最坏情况下为O(n2),最好情况下为O(n)(当数组已经有序时)。
代码示例:
def bubble_sort(arr):
n = len(arr)
for i in range(n):
swapped = False
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] =
### 排序算法概述
排序算法是计算机科学中用于将一组数据按照特定顺序重新排列的算法。常见的排序顺序包括升序和降序,排序算法广泛应用于数据库检索、数据分析、机器学习等领域。排序算法根据其时间复杂度和空间复杂度可以分为多种类型,包括比较排序和非比较排序。
### 常见排序算法分类
排序算法大致可分为两类:比较排序和非比较排序。比较排序通过比较元素的大小来决定它们的顺序,而非比较排序则不依赖元素间的比较。
#### 比较排序
- **冒泡排序**:通过多次遍历数组,每次比较相邻元素并交换它们的位置,将较大的元素逐步“冒泡”到数组末尾。
- **选择排序**:每次遍历数组,选择最小(或最大)的元素,放到已排序部分的末尾。
- **插入排序**:将未排序部分的元素逐个插入到已排序部分的适当位置。
- **归并排序**:采用分治法,将数组分成两半,分别排序后再合并。
- **快速排序**:通过选择一个基准元素,将数组分成两部分,一部分小于基准,另一部分大于基准,然后递归排序。
#### 非比较排序
- **计数排序**:适用于整数排序,通过统计每个元素的出现次数来排序。
- **桶排序**:将元素分配到多个桶中,每个桶单独排序后再合并。
- **基数排序**:按照数字的位数从低位到高位依次排序。
### 冒泡排序
冒泡排序是一种简单的排序算法,通过多次遍历数组,每次比较相邻元素并交换它们的位置,将较大的元素逐步“冒泡”到数组末尾。
**时间复杂度**:平均和最坏情况下为O(n2),最好情况下为O(n)(当数组已经有序时)。
**代码示例**:
```python
def bubble_sort(arr):
n = len(arr)
for i in range(n):
swapped = False
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] =

被折叠的 条评论
为什么被折叠?



