当前位置: 首页 > news >正文

python数据结构和算法(4)

排序算法

  • 所谓排序,是一串记录,按照其中的某个关键字的大小,递增或递减的排列起来的操作
  • 排序算法,就是如何使得记录按照要求排列的方法
  • 排序算法的重要性
    • 在大量数据处理方面,一个优秀的算法可以节省大量的资源
    • 在各个领域中考虑到数据的各种限制和规范,要的到一个符合实际的优秀算法,得经过大量的推理和分析

算法的稳定性

具有相同关键字的记录经过排序后,相对位置保持不变,这样的算法是稳定性算法

  • 不稳定的排序算法:选择排序、快速排序、希尔排序、堆排序
  • 稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序

冒泡排序

冒泡排序是重复的走访要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小,首字母从Z到A)错误,就把它们交换过来,走访元素的工作是重复进行的,直到没有相邻元素需要交换,则说明该元素列已经排序完成。

相邻的两个元,两两进行比较,第1轮比较完毕后,最大的元素,就会处于最大索引处

关注点:

  1. 比较的总轮数
  2. 每轮比较的次数
  3. 哪两个元素进行了比较交换

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

总结:5个数字进行排序,共进行了 4 轮,以变量 i 代表轮数,则 i 的取值范围为 0,1,2,3,即range(0,4),如果n个元素进行排序,轮数i的取值范围为range(0,n-1);以变量j 表示每轮比较的索引
第 1 轮 i = 0,进行了 4 次比较,j 的取值范围为 0,1,2,3
第 2 轮 i = 1,进行了 3 次比较,j 的取值范围为 0,1,2
第 3 轮 i = 2,进行了 2 次比较,j 的取值范围为 0,1
第 4 轮 i = 3,进行了 1 次比较,j 的取值范围为 0,1

j的最大取值范围为0,1,2,3,并且逐轮递减,即range(0,n-i-1)

# 冒泡排序
array = [5,3,4,7,2]
n = len(array)
for i in range(0,n - 1):print(i)for j in range(0,n-i-1):if array[j] > array[j+1]:temp = array[j]array[j] = array[j+1]array[j+1] = temp

时间复杂度

最优时间复杂度 O ( n ) O(n) O(n)
最坏时间复杂度 O ( n 2 ) O(n^2) O(n2)

选择排序

从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾,以此类推,直到全部待排序的数据元素的个数为零

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

array = [5,3,4,7,2]
n = len(array)
for i in range(0,n-1):min_index = ifor j in range(i + 1,n):if array[j] < array[min_index]:min_index = jtemp = array[i]array[i] = array[min_index]array[min_index] = temp

相关文章:

  • 51la查看https统计,悟空统计助力高效运营
  • TensorZero:开源 LLM 应用优化与可观测性平台
  • 如何将照片从Android传输到Mac?
  • Codeforces 2025/6/11 日志
  • ZZU-ARM汇编语言实验 34
  • 一键批量修改XML标签名称:告别手工修改,高效管理标注数据
  • input+disabled/readonly问题
  • (十)量子注意力机制:深度学习与量子计算的交叉融合探索
  • C++面试(5)-----删除链表中指定值的节点
  • Spring | 深入解析 Spring AOP 中的AopProxyUtils.ultimateTargetClass()解决代理对象注解获取问题
  • 如何选择合适的IP轮换周期
  • Arduino入门教程:0、课程介绍认识Arduino
  • html转markdown
  • 第二十六课:手搓梯度增强
  • AAT Bioquest活细胞钙成像新利器——Calbryte 520.AM在动态监测中的核心优势与应用解析
  • vue3提供的hook和通常的函数有什么区别
  • 【2025最新】Adobe Illustrator下载保姆级安装教程(附官方下载链接)
  • Fastapi + vue3 自动化测试平台(6):AI + Web UI的完美结合
  • debian12 修改MariaDB数据库存储位置报错
  • 让Python成为你的网站引擎:Django全栈开发初体验!!!
  • 龙华做手机网站建设/杭州网络推广
  • 网站ipc备案/seo网络推广有哪些
  • wordpress显示用户列表/seo综合优化公司
  • 北京网页制作服务/seo营销外包公司
  • 手机网站无法访问的解决方法/网上seo研究
  • wordpress可视化编辑页面/seo快速排名软件品牌