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

算法详解——选择排序和冒泡排序

一、选择排序

  选择排序算法的执行过程是这样的:首先,算法遍历整个列表以确定最小的元素,接着,这个最小的元素被置换到列表的开头,确保它被放置在其应有的有序位置上。接下来,从列表的第二个元素开始,算法再次执行扫描,这次是为了找出剩余的 n-1 个元素中的最小值,并将其与第二个位置的元素进行交换,这样第二小的元素就被安置在了正确的位置上。依此类推,当进行到第 i 次扫描时(其中 i 的取值范围是从 0 到 n-2),算法会在剩下的 n-i 个元素中寻找最小值,并将其与第 i 个位置的元素进行交换。经过 n-1 次这样的操作后,列表便完成了排序,每个元素都被安置在了其最终的有序位置上。

在这里插入图片描述

SelectionSort(A[0..n-1]):
# 该算法用选择排序对给定的数组排序
# 输入: 一个可排序数组A[0..n-1]
# 输出: 升序排列的数组A[0..n-1]
for i ← 0 to n-2 domin ← ifor j ← i+1 to n-1 doif A[j] < A[min] thenmin ← jswap A[i] and A[min]

二、冒泡排序

  冒泡排序是一种简单的排序算法,它通过重复遍历待排序的列表,比较每对相邻元素的值,如果一对元素的顺序错误(即,第一个比第二个大),就交换它们的位置。通过这种方式,每次遍历都会将未排序部分的最大元素“冒泡”到它的正确位置(即列表的末尾)。经过第一轮排序后,最大的元素会被放置在列表的最末端。紧接着,算法会再次从头开始遍历列表,这次遍历将会把第二大的元素移动到正确的位置。这个过程会一直重复,每次遍历少比较一次,直到整个列表变得有序。具体来说,当执行第i次冒泡排序时(其中i的范围是0到n-2),可以通过下面的示意图来表示这个过程,确保每次遍历都会减少未排序元素的数量,直至整个列表被完全排序。

在这里插入图片描述

BubbleSort(A[0..n-1]):
# 该算法使用冒泡排序方法对数组A[0..n-1]进行排序
# 输入: 一个可排序的数组A[0..n-1]
# 输出: 非降序排列的数组A[0..n-1]for i from 0 to n-2 dofor j from 0 to n-2-i doif A[j+1] < A[j] thenswap A[j] and A[j+1]

参考文献

[1] 算法设计与分析基础/(美)莱维汀(Levitin, A.)著;潘彦译.一3版. --北京:清华大学出版社,2015 .

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

相关文章:

  • 图论(蓝桥杯 C++ 题目 代码 注解)
  • 矩阵起源新一年喜报连连!
  • 牛客——紫魔法师(并查集)
  • 最新WooCommerce教程指南-如何搭建B2C外贸独立站
  • 一文教会你SpringBoot是如何启动的
  • 车载测试面试:各大车企面试题汇总
  • Qt散文一
  • MySQL学习Day32——数据库备份与恢复
  • 阅读基础知识
  • 【NestJS 编程艺术】1. NestJS设计模式深度解析:构建高效、可维护的服务端应用
  • QT中connect()的参数5:Qt::DirectConnection、Qt::QueuedConnection区别
  • VXLAN学习笔记
  • 全排列的不同写法(茴字的不同写法)及对应的时间开销
  • 权衡后台数据库设计中是否使用外键
  • ChatGPT提示词方法的原理
  • 计算机网络 谢希仁(001-1)
  • Windows,MacOS,Linux下载python并配置环境图文讲解
  • 汽车网络基础知识 要点
  • ClickHouse中的设置的分类
  • 香港空间服务器带宽和流量限制:原因和解决方法
  • echarts实践总结(常用一):柱状图(特点:渐变色、点击缩放、左右滑动、悬浮展示样式)
  • CVE-2020-6418:Incorrect side effect modelling for JSCreate
  • STM32信息安全 1.2 课程架构介绍:芯片生命周期管理与安全调试
  • springboot278基于JavaWeb的鲜牛奶订购系统的设计与实现
  • SSH介绍及检测规则思路分析
  • React核心⼊⻔-lesson1
  • 数据结构(三)——栈
  • 【Redis知识点总结】(五)——Redis实现分布式锁
  • CSS 绝对定位 position:absolute
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:RelativeContainer)