算法 class 004(选择,冒泡,插入)

发布时间:2026/11/5 19:33:55
算法 class 004(选择,冒泡,插入) 选择排序刚进入 j 循环的样子j 跳出循环后b 指向最小值的坐标然后交换 i 和 b 位置的 值随后 i , b i , i j1; 开始新一轮的排序void SelectAQort(int* arr,int size)//选择排序 { for (int i 0; i size-1; i) { //i 的位置就是最小值应该放入的位置 int b i;//存储最小值下标一开始默认是 i for (int j i1; j size;j) { if (arr[j] arr[b])//随着j的变化 { //如果j下标的值比b下标还小的值 b j;//那么就将他赋值给 b } } //出了 j的循环b指向的就是最小值的坐标将 b 与 i 交换 if (i b)//处理i就是最小值的情况 continue; Swap(arr, i, b);//交换函数 // 9,8,2,1,7,9,4,8,7,2,3,4 } }冒泡排序以上图为例第一次进入 j 循环每次如果j位置的数大于j后面一位的数那么就交换这两个位置的数j 大于 j1位置的数8 和 3交换j 1j 大于 j1位置的数8 和 7交换j 2j 大于 j1位置的数8 和 4交换j 3j 不大于 j1位置的数不交换 单纯的 j 4j 大于 j1位置的数9 和 5交换j 5j 大于 j1位置的数9 和 7交换j 6j 大于 j1位置的数9 和 2交换j 7j 大于 j1位置的数9 和 8交换j 8j 大于 j1位置的数9 和 4交换j 9j 不大于 j 1位置的数不交换j 10;j 大于 j1位置的数9 和 5交换j 11;j 大于 j1位置的数9 和 7交换j 12j 不大于 j1位置的数不交换j 13由与 j i 所以加完之后 j 循环第一次结束结束后 i 的位置就是最大值了然后 i-- ,j 又重新来到 0 位置新的循环将是 j 遍历至 i -1的位置i - 1的位置会得出新的最大值i 最终的有效位 是 1进入 i 是 1的循环j 0 j 与 j 1做比较大于就交换然后跳出 j 的循环j会等于 i 跳出跳出 i 的循环i -- 等于0跳出函数结束如果不大于直接跳出 j 的循环然后跳出 i 的循环与上面一样只是少了一次交换。插入排序i 赋值 为 1 默认 1下标前面的数是有序的j i 用 j 来实现插入如果 j 小于 j -1就交换如果不小于我们使用 j 0提前结束 j 循环。以上图为例j 与 j-1比较j 不小于 j -1 ,j 0j循环第一次结束i , j ij j - 1,交换然后 j--;j 0继续判断j 不小于 j - 1j 0; j循环第二次结束i , j i;我们的 i 前面的数都是有序的所以如果j 第一次判断就不小于 j - 1,我们就可以使 j 0提前结束循环。小于我们就一直往前找如果 i 指向的数是当前最小值在 j 1时j 与 j - 1交换完后 ,j-- 0,会自己跳出循环如果在往前找的过程中有一次没有交换 就用 j 0提前结束

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询