Python内置了多种排序算法,也可以自己实现各种排序算法。常见的排序算法有:
1. 冒泡排序:
- 相邻元素两两比较,大的元素下沉
- 时间复杂度O(n2),稳定排序
- 语法:
python def bubble_sort(nums): n = len(nums) for i in range(n): for j in range(0, n-i-1): if nums[j] > nums[j+1]: nums[j], nums[j+1] = nums[j+1], nums[j] |
2. 选择排序:
- 找到最小元素,和第一个位置交换
- 时间复杂度O(n2),不稳定排序
- 语法:
python def selection_sort(nums): n = len(nums) for i in range(n): min_idx = i for j in range(i+1, n): if nums[j] < nums[min_idx]: min_idx = j nums[i], nums[min_idx] = nums[min_idx], nums[i] |
3. 插入排序:
- 将元素插入已排序好的序列中
- 时间复杂度O(n2),稳定排序
- 语法:
python def insertion_sort(nums): n = len(nums) for i in range(1, n): tmp = nums[i] j = i - 1 while j >= 0 and nums[j] > tmp: nums[j+1] = nums[j] j -= 1 nums[j+1] = tmp |
4. 快速排序:
- 选取 pivot,将小于 pivot 放左侧,大于 pivot 放右侧
- 时间复杂度O(nlogn),不稳定排序
- 语法:
python def quick_sort(nums, l, r): if l >= r: return i, j = l, r pivot = nums[l] while i < j: while i < j and nums[j] > pivot: j -= 1 nums[i] = nums[j] while i < j and nums[i] <= pivot: i += 1 nums[j] = nums[i] nums[i] = pivot quick_sort(nums, l, i-1) quick_sort(nums, i+1, r) |
要学习各种排序算法的实现方法和时间复杂度。要在项目中根据需求选择正确的排序算法解决问题。
排序算法的学习有助于理解算法的设计和优化方法。要熟练掌握常见的排序算法,不断总结和提高。排序算法属于算法必修内容,需要在代码中长期实践。
要养成在日常编码中使用标准库排序和自定义排序的习惯。排序算法的理解和应用属于技术提高的重点,需要持续强化和优化。
要不断精进,深入研究各种排序算法,实现高效、优化的算法程序。排序算法的学习有助于培养严谨的逻辑思维,成为专业的软件工程师。