Python选择排序和冒泡排序算法

选择排序和冒泡排序都是常见的排序算法。以下是这两种算法的Python实现:

  1. 选择排序(Selection Sort)

选择排序的基本思想是在未排序的序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序的元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

Python实现如下:

  1. def selection_sort(arr):
  2. for i in range(len(arr)):
  3. 找到当前未排序部分中的最小值

  4. min_index = i
  5. for j in range(i+1, len(arr)):
  6. if arrj < arrmin_index:
  7. min_index = j
  8. 将找到的最小值与当前i位置的值交换

  9. arri, arrmin_index = arrmin_index, arri
  10. return arr
  1. 冒泡排序(Bubble Sort)

冒泡排序的基本思想是,通过比较相邻的两个元素,如果前一个比后一个大,则交换它们的位置。这样对数组进行多次遍历,每一次遍历都把一个未排序的元素放置到了已排序的末尾,也就是逐渐"冒泡"到正确的位置。

Python实现如下:

  1. def bubble_sort(arr):
  2. n = len(arr)
  3. for i in range(n):
  4. 最后i个元素已经有序,无需比较

  5. for j in range(0, n-i-1):
  6. if arrj > arrj+1:
  7. arrj, arrj+1 = arrj+1, arrj # 交换位置
  8. return arr

这两种算法的时间复杂度都是O(n^2),其中n是列表的长度。这意味着,对于非常大的数据集,这些算法可能不是最高效的。有其他一些更高效的排序算法,例如快速排序、归并排序和堆排序等。

  1. 快速排序(Quick Sort)

快速排序是一种分治的排序算法。它将一个大的数组分成两个子数组,将两部分独立地排序。快速排序的核心思想是选择一个"基准"元素,通过一趟排序将待排序列分割成独立的两部分,其中一部分的所有元素都比另一部分的所有元素要小,然后再按此方法对这两部分继续进行排序,以达到整个序列有序。

Python实现如下:

  1. def quick_sort(arr):
  2. if len(arr) <= 1:
  3. return arr
  4. pivot = arrlen(arr) // 2
  5. left = x for x in arr if x \< pivot
  6. middle = x for x in arr if x == pivot
  7. right = x for x in arr if x \> pivot
  8. return quick_sort(left) + middle + quick_sort(right)
  1. 归并排序(Merge Sort)

归并排序是另一种分治的排序算法。它将待排序的序列划分为若干个子序列,每个子序列是一个有序的序列。然后再将所有子序列合并成一个有序的序列。这个过程是递归的,每一层的归并做为一次"归并操作"。

Python实现如下:

  1. def merge_sort(arr):
  2. if len(arr) <= 1:
  3. return arr
  4. mid = len(arr) // 2
  5. left = merge_sort(arr:mid)
  6. right = merge_sort(arrmid:)
  7. return merge(left, right)
  8. def merge(left, right):
  9. result = \[\]
  10. i = j = 0
  11. while i < len(left) and j < len(right):
  12. if lefti <= rightj:
  13. result.append(lefti)
  14. i += 1
  15. else:
  16. result.append(rightj)
  17. j += 1
  18. result += lefti:
  19. result += rightj:
  20. return result
相关推荐
先吃饱再说12 小时前
判断回文字符串,从一行代码到双指针优化
算法
小九九的爸爸14 小时前
前端想要入门Agent开发,要具备哪些Python基础?
python·agent·ai编程
黄敬峰15 小时前
深入理解算法核心:从递归思想、数组扁平化到快速排序
算法
阿耶同学15 小时前
手把手教你用 LangGraph 搭建三层嵌套 Agent 架构
python·程序员
得物技术16 小时前
从狂野代码到按目标生产:得物推荐 AI Harness 的工程化实践|AICon 演讲整理
人工智能·算法·架构
AI小老六20 小时前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程
胡萝卜术20 小时前
从“分数打架”到“排名投票”:为什么你的ChatBI必须用RRF?
算法·设计模式·面试
Asize21 小时前
初识DFS 与 BFS:递归、队列与图遍历
算法
花酒锄作田1 天前
Pydantic校验配置文件
python
hboot1 天前
AI工程师第四课 - 深度学习入门
pytorch·python·神经网络