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

排序算法的魔法世界:用C语言揭开数据排列的奥秘

在这里插入图片描述

当数据开始跳集体舞:排序的意义

想象你面前有一群调皮的数字精灵在开派对,7和3在跳探戈,9和1在玩捉迷藏,5和2在抢蛋糕。这时候就需要排序算法这位神奇的派对管家出场了!它像音乐指挥家一样挥动魔棒,让所有数字精灵乖乖排成整齐的队伍。在计算机的世界里,排序算法就是处理数据的超级管家,无论是学生成绩排名、电商价格排序,还是游戏积分排行榜,背后都是排序算法在默默工作。

在这里插入图片描述

冒泡排序:数据界的泡泡浴

让我们先认识最可爱的"泡泡小精灵"——冒泡排序。就像水中的泡泡会自然上浮,这个算法让数据像泡泡一样慢慢"浮"到正确位置。它的工作方式特别有趣:相邻两个元素不停地比较交换,就像两个小人在跳交谊舞,如果前一个人个子太高(数值大),就主动和后面的小伙伴交换位置。经过一轮轮这样的"舞蹈排练",最大的数字就会像最大的泡泡一样浮到队列末尾。

来看这个生动的例子:假设要排序[5,3,8,6,4]
第一轮舞蹈:
5和3跳→交换→[3,5,8,6,4]
5和8跳→不动
8和6跳→交换→[3,5,6,8,4]
8和4跳→交换→[3,5,6,4,8]
最大的8已经到位

第二轮:
3和5→不动
5和6→不动
6和4→交换→[3,5,4,6,8]
第三轮:
3和5→不动
5和4→交换→[3,4,5,6,8]
排序完成!

实现代码:

void bubbleSort(int arr[], int n) {for(int i=0; i<n-1; i++) {for(int j=0; j<n-i-1; j++) {if(arr[j] > arr[j+1]) {// 交换两个元素int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}
}

在这里插入图片描述

选择排序:数据界的选美大赛

如果说冒泡排序是温柔的水中舞蹈,那么选择排序就是严格的选美比赛。它的核心思想是:每次从待选元素中选出"最美"的(最小或最大值),然后放到已排序区域的末尾。就像在超市选苹果,你总是先挑最大最红的放在购物篮最前面,然后再从剩下的苹果里继续挑选。

以[29,10,14,37,13]为例:

相关文章:

排序算法的魔法世界:用C语言揭开数据排列的奥秘

当数据开始跳集体舞:排序的意义 想象你面前有一群调皮的数字精灵在开派对,7和3在跳探戈,9和1在玩捉迷藏,5和2在抢蛋糕。这时候就需要排序算法这位神奇的派对管家出场了!它像音乐指挥家一样挥动魔棒,让所有数字精灵乖乖排成整齐的队伍。在计算机的世界里,排序算法就是处…...

网页模板免费HTML源码 HTML网页设计模板

在现代网站开发中&#xff0c;拥有一个美观且功能齐全的网页模板是至关重要的。对于许多开发者和设计师来说&#xff0c;获取高质量的免费HTML源码和网页设计模板可以大大简化开发流程。本文将探讨网页模板免费HTML源码的资源、优势以及如何有效利用这些模板。 什么是网页模板…...

Python实现语音识别详细教程【2025】最新教程

文章目录 前言一、环境搭建1. 下载 Python2. 安装 Python3 使用 pip 安装必要的库 二、使用 SpeechRecognition 库进行语音识别1.识别本地音频文件2.实时语音识别3. 使用其他语音识别引擎 注意事项 前言 以下是一份较为完整的 Python 语音识别教程&#xff0c;涵盖环境搭建、使…...

与传统光伏相比 城电科技的光伏太阳花有什么优势?

相比于传统光伏&#xff0c;城电科技的光伏太阳花有以下优势&#xff1a; 一、发电效率方面 智能追踪技术&#xff1a;光伏太阳花通过内置的智能追踪系统&#xff0c;采用全球定位跟踪算法&#xff0c;能够实时调整花瓣&#xff08;即光伏板&#xff09;的角度&#xff0c;确…...

Qt——连接MySQL数据库之ODBC的方法详细总结(各版本大同小异,看这一篇就够了)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《项目案例分享》 《极客DIY开源分享》 《嵌入式通用开发实战》 《C++语言开发基础总结》 《从0到1学习嵌入式Linux开发》 《QT开发实战》 《Android开发实战》 《实用硬件方案设计》 《结构建模设…...

Python的那些事第二十二篇:基于 Python 的 Django 框架在 Web 开发中的应用研究

基于 Python 的 Django 框架在 Web 开发中的应用研究 摘要 Django 是一个基于 Python 的高级 Web 框架,以其开发效率高、安全性和可扩展性强等特点被广泛应用于现代 Web 开发。本文首先介绍了 Django 的基本架构和核心特性,然后通过一个实际的 Web 开发项目案例,展示了 Dj…...

pytest测试专题 - 1.3 测试用例发现规则

<< 返回目录 1 pytest测试专题 - 1.3 测试用例发现规则 执行pytest命令时&#xff0c;可以不输入参数&#xff0c;或者只输入文件名或者目录名&#xff0c;pytest会自己扫描测试用例。那pytest基于什么规则找到用例呢&#xff1f; 文件名&#xff1a;满足文件名称为tes…...

【Bluedroid】 BLE连接源码分析(一)

BLE链接过程分析见【Bluedroid】BLE连接过程详解-CSDN博客,本篇主要围绕HCI_LE_Create_Connection展开。基于Android14源码进行分析。在蓝牙低功耗技术中,设备之间建立连接是进行数据传输等操作的前提。HCI LE Extended Create Connection Command 提供了一种更灵活、功能更丰…...

Unity DeepSeek API 聊天接入教程(0基础教学)

Unity DeepSeek API 聊天接入教程(0基础教学) 1.DeepSeek 介绍 DeepSeek是杭州深度求索人工智能基础技术研究有限公司推出的一款大语言模型。2025年1月20日&#xff0c;DeepSeek-R1正式上线&#xff0c;和当前市面上的主流AI相比&#xff0c;它在仅有极少标注数据的情况下&am…...

【16届蓝桥杯寒假刷题营】第1期DAY4

4.可达岛屿的个数 - 蓝桥云课 题目背景 在一个神奇的魔法世界中&#xff0c;有一座古老的迷幻之城。迷幻之城被分成 n 个鸟屿&#xff0c;编号从 1 到 n&#xff0c;共有 m 座桥。迷幻之城的居民们希望能够建立起紧密的联系&#xff0c;每个岛屿上的居民都想知道自己最多能到…...

Flink提交pyflink任务

1.官方文档&#xff1a; flink1.14:https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/deployment/cli/#submitting-pyflink-jobs flink1.18:https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/cli/#submitting-pyflink-jobs 2.提…...

大语言模型中one-hot编码和embedding之间的区别?

1. 维度与稀疏性 One-Hot编码 定义&#xff1a;每个词被表示为一个高维稀疏向量&#xff0c;维度等于词汇表大小。例如&#xff0c;词汇表有10,000个词&#xff0c;每个词对应一个10,000维的向量&#xff0c;其中仅有一个位置为1&#xff08;表示当前词&#xff09;&#xff0…...

CAN学习记录

CAN(Controller Area Network),是ISO国际标准化的串行通信协议&#xff0c;为了满足汽车产业的“减少线束的数量”、“通过多个LAN&#xff0c;进行大量数据的高速通信”的需求 低速CAN&#xff08;ISO11519)通信速率10~125kbps&#xff0c;总线长度可达1000米 高速CAN&#…...

滑动窗口算法篇:连续子区间与子串问题

1.滑动窗口原理 那么一谈到子区间的问题&#xff0c;我们可能会想到我们可以用我们的前缀和来应用子区间问题&#xff0c;但是这里对于子区间乃至子串问题&#xff0c;我们也可以尝试往滑动窗口的思路方向去进行一个尝试&#xff0c;那么说那么半天&#xff0c;滑动窗口是什么…...

机器翻译同样的文本,是从英语翻译成日语更准确还是中文翻译成日语更准确

在大多数情况下&#xff0c;从英语翻译成日语会比从中文翻译成日语更准确&#xff0c;原因如下&#xff1a; 1. 语言结构的相似性 英语和日语的句子结构更接近&#xff0c;特别是在语法、从句使用、定语位置等方面。例如&#xff0c;日语和英语都使用 SVO 结构&#xff08;主…...

MybatisMybatisPllus公共字段填充与配置逻辑删除

Mybatis/MybatisPllus公共字段填充与配置逻辑删除 在开发过程中&#xff0c;很多时候需要处理一些公共字段&#xff0c;例如&#xff1a;创建时间、修改时间、状态字段等。这些字段通常会在插入或更新数据时进行填充&#xff0c;以便记录数据的变化和状态。同时&#xff0c;逻…...

001-监控你的文件-FSWatch-C++开源库108杰

fswatch 原理与应用简介fswatch 安装fswatch 实践应用具体应用场景与细节补充 1. 简介 有些知识&#xff0c;你知道了不算厉害&#xff0c;但你要是不知道&#xff0c;就容易出乱。 很多时候&#xff0c;程序需要及时获取磁盘上某个文件对象&#xff08;文件夹、文件&#xff0…...

SpringMVC环境搭建

文章目录 1.模块创建1.创建一个webapp的maven项目2.目录结构 2.代码1.HomeController.java2.home.jsp3.applicationContext.xml Spring配置文件4.spring-mvc.xml SpringMVC配置文件5.web.xml 配置中央控制器以及Spring和SpringMVC配置文件的路径6.index.jsp 3.配置Tomcat1.配置…...

ESXi安装【真机和虚拟机】(超详细)

项目简介&#xff1a; ESXi&#xff08;Elastic Sky X Integrated&#xff09;是VMware公司开发的一种裸机虚拟化管理程序&#xff0c;允许用户在单一物理服务器上运行多个虚拟机&#xff08;VM&#xff09;。它直接安装在服务器硬件上&#xff0c;而不是操作系统之上&#xff…...

学习笔记之debian的thonny开发(尚未验证)--从stm32裸机到linux嵌入式系统

这应该算 stm32裸机用户 转 linux嵌入式系统 的入门学习笔记。 【鲁班猫】39-vnc远程桌面连接鲁班猫_哔哩哔哩_bilibili 本集的鲁班猫的视频介绍中&#xff0c;没有清晰明确指出需要linux开发板接入网络&#xff0c;接入网络可以使用有线网口或者wifi路由&#xff0c;有些提示…...

React常用库

React 生态系统非常丰富&#xff0c;有许多常用的库可以帮助开发者更高效地构建应用。以下是一些常见的 React 库及其用途&#xff1a; --- ### 1. **状态管理** - **Redux** 最流行的全局状态管理库&#xff0c;适合中大型应用。 官网: https://redux.js.org/ - **…...

「软件设计模式」桥接模式(Bridge Pattern)

深入解析桥接模式&#xff1a;解耦抽象与实现的艺术 一、模式思想&#xff1a;正交维度的优雅解耦 桥接模式&#xff08;Bridge Pattern&#xff09;通过分离抽象&#xff08;Abstraction&#xff09;与实现&#xff08;Implementation&#xff09;&#xff0c;使二者可以独立…...

Python 用户输入和While循环(使用while 循环来处理列表和字典)

大多数程序都旨在解决最终用户的问题&#xff0c;为此通常需要从用户那里获取一些信息。例如&#xff0c;假设有人要判断自己是否到了投票的年龄&#xff0c;要编写回答这个问题的程序&#xff0c;就 需要知道用户的年龄&#xff0c;这样才能给出答案。因此&#xff0c;这种程序…...

docker 基础命令使用(ubuntu)

docker 状态查询 docker ps docker ps -adocker --version docker info docker --help docker run --help docker ps --help ...docker 操作镜像命令 docker imagesdocker rmi 镜像id/镜像名docker 操作容器命令 docker ps docker ps -adocker run 命令 # 端口映射 -p 参数…...

Jenkins 安装插件 二

Jenkins 安装插件 二 一. 打开 Dashboard 打开 Jenkins 界面&#xff0c;不管在任何界面&#xff0c;只需要点击左上角 Dashboard 按钮即可 二. 打开 Manage Jenkins 找到 Manage Jenkins -> System Configuration -> Plugins 点击 Plugins 打开界面如下 Updates&a…...

深入解析与解决 Oracle 报错:ORA-29275 部分多字节字符20250213

&#x1f6e0;️ 深入解析与解决 Oracle 报错&#xff1a;ORA-29275 部分多字节字符 引言 &#x1f31f; 在与 Oracle 数据库打交道的日常工作中&#xff0c;你是否遇到过 ORA-29275: partial multibyte character 这个令人头疼的错误&#xff1f;这个错误通常与字符编码、数…...

CI/CD(二)docker-compose安装Jenkins

1、docker-compose.yml version: 3.8services:jenkins:image: jenkins/jenkins:lts # 使用官方的 Jenkins LTS 镜像container_name: jenkinsuser: root # 如果需要以 root 用户运行ports:- "8080:8080" # Jenkins Web 界面端口- "50000:50000" # 用于 Jen…...

Windows环境安装部署minimind步骤

Windows环境安装部署minimind步骤 必要的软件环境 git git&#xff0c;可下载安装版&#xff0c;本机中下载绿色版&#xff0c;解压到本地目录下&#xff08;如&#xff1a;c:\soft\git.win64&#xff09;&#xff0c;可将此路径添加到PATH环境变量中&#xff0c;供其他程序…...

使用Node.js进行串口通信

目录 一、 安装 serialport 库二.、实现方法1.打开串口并配置参数2. 向串口传递信息3. 接收串口信息4. 处理错误5. 关闭串口6. 使用解析器7. 获取串口列表 三、 完整示例代码 一、 安装 serialport 库 首先&#xff0c;需要安装 serialport 库。可以通过 npm 安装&#xff1a;…...

C# ASP.NET的应用场景

.NET学习资料 .NET学习资料 .NET学习资料 C# ASP.NET作为一种强大的 Web 开发框架&#xff0c;在众多领域都有着广泛的应用&#xff0c;为各类 Web 应用的开发提供了高效、可靠的解决方案。以下是其主要的应用场景&#xff1a; 企业级 Web 应用 在企业级应用开发中&#xf…...