Python 编程:从简单到高级的排序算法372
排序是数据处理中的一个基本操作,在 Python 编程中,有多种现成的排序算法可供使用。这些算法根据具体情况而效率不同,选择合适的算法可以显著提高程序的性能。本文将介绍 Python 中常见的排序算法,从易于理解的冒泡排序到高效复杂的快速排序,并提供代码示例和时间复杂度分析。
冒泡排序
冒泡排序是一种简单易懂的排序算法。它通过不断比较相邻元素并交换位置,将最大值逐个“冒泡”到数组末尾。每次遍历数组时,都会找出最大值并将其交换到当前位置,直到整个数组有序为止。冒泡排序的时间复杂度为 O(n^2),其中 n 是数组长度。```python
def bubble_sort(arr):
for i in range(len(arr) - 1):
for j in range(len(arr) - 1 - i):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
```
选择排序
选择排序也是一种比较简单的排序算法。它通过在未排序部分中找到最小值并与当前位置交换,将最小值逐个移动到数组开头。每次遍历数组时,都会找到最小值并将其交换到当前位置,直到整个数组有序为止。选择排序的时间复杂度也为 O(n^2)。```python
def selection_sort(arr):
for i in range(len(arr)):
min_idx = i
for j in range(i + 1, len(arr)):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
```
插入排序
插入排序是一种直观的排序算法,它通过逐个将元素插入到已排序部分中来对数组进行排序。从第二个元素开始,算法会比较当前元素与已排序部分中的元素,并在适当的位置插入。插入排序的时间复杂度为 O(n^2),但对于小规模数组或几乎有序的数组,它可以比冒泡排序和选择排序更有效率。```python
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
```
归并排序
归并排序是一种分治算法,它通过将数组递归地分成更小的部分,对这些部分进行排序,然后合并它们来对整个数组进行排序。归并排序的时间复杂度为 O(n log n),这比冒泡排序、选择排序和插入排序要好得多。但是,归并排序需要额外的空间来存储临时数组。```python
def merge_sort(arr):
if len(arr)
2025-02-03
下一篇:Python居中编程大法
Python编程与Swift编程语言之间的桥梁
https://jb123.cn/python/32549.html
零成本掌握编程脚本
https://jb123.cn/jiaobenbiancheng/32548.html
以Perl拆分字符串和数组
https://jb123.cn/perl/32547.html
Perl 中 join() 函数详解
https://jb123.cn/perl/32546.html
Python 中的加密编程
https://jb123.cn/python/32545.html
热门文章
Python 编程解密:从谜团到清晰
https://jb123.cn/python/24279.html
Python编程深圳:初学者入门指南
https://jb123.cn/python/24225.html
Python 编程终端:让开发者畅所欲为的指令中心
https://jb123.cn/python/22225.html
Python 编程专业指南:踏上编程之路的全面指南
https://jb123.cn/python/20671.html
Python 面向对象编程学习宝典,PDF 免费下载
https://jb123.cn/python/3929.html