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

【入门级-算法-6、排序算法:排序的基本概念冒泡排序】

一、排序概念:是将一组数据按照特定规则重新排列的过程,是计算机科学中最基础且重要的算法之一。

二、排序的基本要素
排序键(Key):是排序过程中用于比较和确定元素顺序的特定数据项或数据属性。

稳定性:排序过程中,相等元素的相对位置是否保持不变
稳定排序:相等元素排序后相对位置不变
不稳定排序:相等元素排序后相对位置可能改变

排序方向:
升序排序(从小到大)
降序排序(从大到小)

时间复杂度:在计算机科学中,时间复杂性,又称时间复杂度,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。时间复杂度是衡量算法执行时间随输入规模增长而变化的度量标准,是算法分析的核心概念。

空间复杂度:空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度,通常用大O符号表示。

设计算法时,时间复杂度和空间复杂度往往存在权衡关系,优秀的算法设计需要在两者之间找到平衡点,有两种常用解决方法:一个是空间换时间,就是说使用额外存储空间来减少计算时间;一个是时间换空间,就是说减少存储空间但增加计算时间,在实际的开发过程中,要根据实际资源的情况进行调整。

三、排序算法分类
1、比较排序
冒泡排序
选择排序
插入排序
希尔排序
归并排序
快速排序
堆排序
2、非比较排序
计数排序
桶排序
基数排序

四、冒泡排序

  1. 冒泡排序 (Bubble Sort)
    原理:重复比较两个相邻的元素,将较大的元素逐步"冒泡"到数组末尾。

举例说明:
将23、8、25、4、11按从小到大输出。
第一趟排序
23 8 25 4 11 原数列
8 23 25 4 11 第一次
8 23 25 4 11 第二次
8 23 4 25 11 第三次
8 23 4 11 25 第四次,即比较结果(每一趟最后一次排序结束后,最大的数据“浮出水面”,即找到最大的数)
第二趟排序
8 23 4 11 原数列(此时已经确定25是最大的数,因此25就不再参与比较)
8 23 4 11 第一次
8 4 23 11 第二次
8 4 11 23 第三次,即比较结果

规律:如果有n个数进行排序,需要则进行n-1趟的比较,在第j趟中进行n-j次相邻两个数的比较。

根据上面的规律,代码实现
main( )
{
int a[10];
int i,j,t;
printf(“input 10 number:\n”);
for (i=0; i<10; i++)
{
scanf(“%d”,&a[i]);
}
printf(“\n”);
for(j=1;j<10;j++)
for( i=0;i<10-j; i++)
if (a[i]>a[ i+1])
{ t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf(“the sorted number:\n”);
for ( i=1; i<11; i++)
printf(“%d”,a[i]);
}

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

相关文章:

  • 【100页PPT】数字化转型某著名企业集团信息化顶层规划方案(附下载方式)
  • Redis入门和简介
  • LeetCode 刷题【42. 接雨水】
  • 基于51单片机声控灯设计 智能声音+光线控制 楼道灯 声控开关
  • RabbitMQ面试精讲 Day 23:分布式事务与可靠投递
  • 【Redis】分布式系统的演化过程
  • [Oracle数据库] Oracle 常用函数
  • 接口芯片断电高阻态特性研究与应用分析
  • 基于 ArcFace/ArcMargin 损失函数的深度特征学习高性能人脸识别解决方案
  • 解释器模式C++
  • EN 61547照明产品的电磁兼容抗干扰标准
  • 图数据库如何构筑 Web3 风控防线 聚焦批量注册与链上盗转 悦数图数据库
  • eBPF技术介绍
  • 【Java】HashMap的详细介绍
  • YAML:锚点深度解析,告别重复,拥抱优雅的配置艺术
  • 【Java Web 快速入门】十、AOP
  • 「 CentOS7 安装部署k8s」
  • 水环境遥感分析!R语言编程+多源遥感数据预处理;水体指数计算、水深回归分析、水温SVM预测、水质神经网络建模及科研级可视化制图
  • 关于simplifyweibo_4_moods数据集的分类问题
  • 云原生俱乐部-k8s知识点归纳(3)
  • 2025年中国AI算力基础设施发展趋势洞察
  • MySQL 全面指南:从入门到精通——深入解析安装、配置、操作与优化
  • Linux 进程、线程与 exec/系统调用详解
  • 力扣top100(day04-06)--贪心算法
  • 自动处理考勤表——如何使用Power Query,步步为营,一点点探索自定义函数
  • 陪伴,是挫折教育最暖的底色
  • Java 中使用阿里云日志服务(SLS)完整指南
  • Hologres实战:路径分析函数
  • 【开发语言】Groovy语言:Java生态中的动态力量
  • 1.2. qemu命令起虚拟机增加网络配置