当前位置: 首页 > 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.dtcms.com/a/332880.html

相关文章:

  • uniapp小程序ocr-navigator身份证拍照上传替换方案
  • Rust 入门 集合类型 (十六)
  • 103、【OS】【Nuttx】【周边】文档构建渲染:Sphinx 配置文件
  • Spring 框架中,@EnableScheduling和 @Scheduled详解
  • 【SpringBoot】SpringBoot 中的 Shiro、Spring Security 学习过程及碰到的问题和解决方法
  • Spring Ai 如何配置以及如何搭建
  • SpringBoot系列之从繁琐配置到一键启动之旅
  • 银河麒麟服务器jar包部署自启动配置
  • L4 级别自动驾驶 硬件架构设计
  • JavaScript 基础实战:DOM 操作、数据类型与常见需求实现
  • LeetCode-17day:堆
  • 快速学会什么是gPRC
  • 【大模型微调系列-03】 大模型数学基础直观入门
  • 前端动画库之gsap
  • Android init.rc详解3
  • 机器学习之PCA
  • 八股文小记 Servlet 过滤器-Spring MVC 拦截器-Spring AOP 拦截器区别
  • Spring容器初始化源码解析
  • 深入解析MPLS网络中的路由器角色
  • 【java】对word文件设置只读权限
  • HTTP/2新型漏洞“MadeYouReset“曝光:可发动大规模DoS攻击
  • 代码随想录Day51:图论(岛屿数量 深搜广搜、岛屿的最大面积)
  • C#文件复制异常深度剖析:解决“未能找到文件“之谜
  • Ceph CSI 镜像删除流程与 Trash 机制失效问题分析文档
  • CISC 与 RISC 架构全面解析:从原理到应用
  • gulimall项目笔记:P54三级分类拖拽功能实现
  • 《Attention-driven GUI Grounding》论文精读笔记
  • CSS Houdini 与 React 19 调度器:打造极致流畅的网页体验
  • 【Redis】Redis典型应用——分布式锁
  • 【Redis】分布式系统的演化过程