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

选择排序 冒泡排序

选择排序

思想:

1.遍历数组,找到数组最大值,记录最大值的下标,将最大值与最后一个值进行交换

2.将剩下的数组,重新找最大值,重复第一步,直到所有的数组排好顺序

代码:

void selectSort(vector<int>v){int n = v.size();for(int i=1;i<n;i++){int max_id = 0for(int j=1;j<n-i;i++){if(v[j]>v[max_id]) max_id=j;}swap(v[max_id],v[n-i]);}
}

时间复杂度 O(n2)

空间复杂度 O(1)

稳定性 不稳定

冒泡排序

思想:

1.从左到右,相邻两个数字进行比较,如果左边的数大于右边的数,则两个数字交换位置,确定该数组最大数字在最后一位

2.重复此操作直到全部数字排序完成

3.优化:如果数组在遍历过程中未发生交换,直接结束排序

代码:

void BubbleSort(vector<int>v{int n =v.size();for(int i=1;i<n;i++){bool flag = 1;for(int j=0;j<n-i;j++){if(v[j]>v[j+1]){swap(v[j],v[j+1]);flag = 0;}}if(flag) return;}
}

时间复杂度:O(n2)

空间复杂度:O(1)

稳定性: 稳定

http://www.lryc.cn/news/595394.html

相关文章:

  • windows电脑给iOS手机安装ipa包的方法
  • 宝塔面板Nginx报错: IP+端口可以直接从访问,反向代理之后就504了 Gateway Time-out
  • Xilinx FPGA XCKU115‑2FLVA1517I AMD KintexUltraScale
  • 052_迭代器(Iterator / ListIterator)
  • The Survey of Few-shot Prompt Learning on Graph
  • Ubuntu 22.04编译安装Nginx 1.28
  • Vue3 面试题及详细答案120道 (1-15 )
  • 可变形卷积神经网络详解:原理、API与实战
  • 如何使用终端查看任意Ubuntu的版本信息
  • ACE 插入元件
  • 信息学奥赛一本通 1576:【例 2】选课 | 洛谷 P2014 [CTSC1997] 选课
  • ​NVIDIA V100、H100、A100 和 RTX 5090​​ 的显存
  • C++高性能日志库spdlog介绍
  • 【郑州课工场】深入解析Kubernetes 1.33版本Pod Priority and Preemption功能
  • 【免费版】开启 Youtube 双语字幕
  • C/C++---emplace和emplace_back
  • Go语言的包
  • TSN(时间敏感网络)协议栈在STM32平台(尤其是STM32MP2系列)上的实现
  • 设备虚拟化技术-IRF
  • C++ 中的默认构造函数:非必要,不提供
  • 苍穹外卖Day5
  • B树、B+树的区别及MySQL为何选择B+树
  • Git核心功能简要学习
  • GraphRAG快速入门和原理理解
  • 关于JVM
  • AXI接口学习
  • 上网行为管理-身份认证1
  • 剖析Sully.ai:革新医疗领域的AI助手功能启示
  • Hyperledger Fabric V2.5 生产环境部署及安装Java智能合约
  • 【OD机试】模拟数据序列号传输