【入门级-算法-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.pswp.cn/diannao/96051.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/96051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建私有Claude体验平台:Open WebUI + Anthropic API + Trojan完整部署指南

言简意赅的讲解Open WebUI Anthropic API Trojan解决的痛点 身边的小伙伴们都想体验Claude&#xff0c;但直接访问Anthropic API存在网络连接问题。本文记录了我如何通过Docker部署Open WebUI&#xff0c;结合网络代理和Anthropic Manifold Pipe&#xff0c;为团队搭建了一个…

Hadoop技术栈(一)hadoop搭建与HDFS常用命令

概念 hadoop是一个大数据的分布式存储&#xff0c;调度&#xff0c;计算框架。也可以说是一个生态圈&#xff0c;包含很多技术&#xff1a;Hive、Hbase、Flume、Kafka... Hadoop的优点 Hadoop具有存储和处理数据能力的高可靠性。 Hadoop通过可用的计算机集群分配数据&#xf…

electron之win/mac通知免打扰

目录 系统区别 win&#xff1a;不支持桌面通知&#xff0c;使用气泡显示 mac&#xff1a;有镜像/共享屏幕时 通知免打扰设置 代码 Vuex&#xff1a;免打扰状态 src/store/App/mutations.ts src/store/App/state.ts src/views/miracast/index.vue Util 【可选】src/ut…

为什么Integer缓存-128 ~ 127

背景 面试题, 相关问题的考察. 题目大概是, 包装类型Integer 比较的时候 : -127 ~ 128 是否相等. 其他是否相等? 原理比较的是地址. 如果是不同的对象, 那么就不相等. 实践 下面是几个简单实践. 全部新建对象 解释: 新建对象后, 地址不同, 所以都是false不新建对象 暂时的理解…

微软Wasm学习-创建一个最简单的c#WebAssembly测试工程

要创建一个最简单的微软 WebAssembly&#xff08;Wasm&#xff09;测试工程&#xff0c;最直接的方式是使用 Blazor WebAssembly&#xff0c;这是微软官方推荐的 WebAssembly 开发框架。下面是创建和运行最简单 Blazor WebAssembly 项目的步骤&#xff1a; 相关&#xff1a;微…

通过 GitHub520 项目自动获取最新 Hosts 配置,无需手动查询 IP。

操作步骤&#xff1a;打开终端Command 空格 聚焦搜索“终端”&#xff0c;打开应用。执行一键脚本复制以下命令粘贴到终端运行&#xff08;需输入密码授权&#xff09;&#xff1a;bashsed -i "" "/# GitHub520 Host Start/,/# Github520 Host End/d" /et…

C# 目录与文件操作笔记

一、基本概念1. 数据存储方式对比存储方式适用场景特点数据库存储大量、关系复杂、有序的数据结构化强&#xff0c;支持复杂查询和事务文件存储少量、关系简单的数据&#xff08;如日志&#xff09;操作简便&#xff0c;可存储于任意介质2. 文件与流文件&#xff1a;存储在磁盘…

docker部署flask并迁移至内网

需要直接使用的可以使用下面的链接&#xff1a; 通过网盘分享的文件&#xff1a;docker_flask.tar 链接: https://pan.baidu.com/s/163ocPFw8cqfXgVXeejv36g?pwdqxqm 提取码: qxqm 来自百度网盘超级会员v6的分享 外网部署docker版flask 目录结构 ./miniconda-docker/ ├── d…

161. Java Lambda 表达式 - 使用工厂方法创建 Predicates

文章目录161. Java Lambda 表达式 - 使用工厂方法创建 Predicates&#x1f3af; Predicate 工厂方法概览&#x1f9ea; 示例一&#xff1a;Predicate.isEqual() 工厂方法&#x1f9ea; 示例二&#xff1a;Predicate.not() 工厂方法&#xff08;Java 11&#xff09;&#x1f3af…

c#Blazor WebAssembly在网页中多线程计算1000万次求余

在 Blazor WebAssembly 中实现多线程计算并获取线程 ID 是可行的&#xff0c;但需要正确配置多线程环境并处理线程安全和 UI 更新逻辑。以下是完整示例和检测方法&#xff1a;一、准备工作&#xff1a;启用多线程支持首先需确保项目已启用 WebAssembly 多线程&#xff0c;修改项…

鼠标右键没有“通过VSCode打开文件夹”

1, WinR 打开运行&#xff0c;输入regedit&#xff0c;打开注册表&#xff0c;找到HKEY_CLASSES_ROOT\*\shell分支&#xff0c;如果没有shell分支&#xff0c;则在*下点击右键&#xff0c;选择“新建&#xff0d;项”&#xff0c;建立shell分支。 2, 在shell下新建“VisualCod…

[ Spring 框架 ] 框架搭建和属性赋值

目录 1. Spring定义: (1). IOC( Inversion of Control): (2). AOP (Aspect Oriented Programming): (3)一站式: 2. spring搭建: (1). 创建一个Maven项目 (2). 导入核心 jar包 (3). 编写 spring 配置文件 (4). 编写实体类,并生成set方法 (5). 在resource中加入spring核…

前端 大文件分片下载上传

前端 大文件分片下载上传 背景介绍&#xff1a; 当前项目是给投行部门做系统&#xff0c;业务方需要有专门的文档中心去管理文件&#xff0c;包括但是不限于文件的上传和下载等等。笔者本来就是采用的浏览器表单上传的方式进行文件上传&#xff0c;但是谁曾想在进行稍微大一点的…

【Python练习】097. 编写一个函数,实现简单的版本控制工具

097. 编写一个函数,实现简单的版本控制工具 097. 编写一个函数,实现简单的版本控制工具 示例代码 功能说明 使用方法 注意事项 实现方法 基于文件快照的实现方法 基于差异存储的实现方法 基于命令模式的实现方法 基于Git-like的实现方法 097. 编写一个函数,实现简单的版本控…

嵌入式硬件篇---Tof

TOF 的原理与本质TOF&#xff08;Time of Flight&#xff0c;飞行时间&#xff09;是一种通过测量信号&#xff08;通常是光&#xff09;在空间中传播时间来计算距离的技术。其本质是利用 “距离 速度 时间” 的物理公式&#xff1a;通过发射信号&#xff08;如激光、红外光&…

Vue diff简介

Vue3 diff 最长递增子序列双端diff 理念 相同的前置和后置元素的预处理&#xff0c;考虑边界情况&#xff0c;减少移动&#xff1b;最长递增子序列&#xff08;动态规划、二分法&#xff09;&#xff0c;判断是否需要移动 操作 前置与后置预处理判断是否需要移动 递增法&#x…

罗技MX Anywhere 2S鼠标修复记录

【现象】单击时总是出现双击的现象 【问题原因】从网络收集&#xff1a; 说法1&#xff0c;欧姆龙微动损坏&#xff1b;说法2&#xff0c;按键磨损导致按键和微动开关接触不良&#xff1b; 【问题排查】 微动损坏&#xff1a;拆掉壳子后&#xff0c;用手按住左键的微动开关&…

常见IP模块的仲裁策略和实现

在一个 Message Unit 中包含两个 Core&#xff08;处理器核心&#xff09;&#xff0c;它们之间访问共享资源&#xff08;如寄存器、FIFO、buffer 等&#xff09;时&#xff0c;仲裁机制&#xff08;Arbitration&#xff09; 是确保系统稳定性和正确性的关键。以下是常见的仲裁…

上周60+TRO案件,波比的游戏时间/丹迪世界/飞盘/迪奥/多轮维权,手表/汽车品牌持续发力,垃圾桶专利等新增侵权风险!

赛贝整理上周&#xff08;2025年8月11日-8月15日&#xff09;的TRO诉讼案件发案情况&#xff0c;根据赛贝TRO案件查询系统了解到&#xff0c;上周合计发起了超60起诉讼案件&#xff0c;涵盖 IP /品牌、版权、专利等多个领域&#xff0c;涉及影视、奢侈品、汽车、游戏、日常用品…

用 Python 在 30 分钟内搭一个「可回放的实时日志」——把攻击流量变成可视化剧情

业务背景 我们运营一款 FPS 端游&#xff0c;外挂作者常把 DDoS 伪装成「玩家掉线」来骗客服。以前排查要捞 CDN 日志、对时间戳、人工比对&#xff0c;平均 2 小时才能定位。现在用一条 30 行的 Python 脚本把边缘节点日志实时打到 Kafka&#xff0c;再回放到 Grafana&#xf…