蓝桥杯算法基础(13):十大排序算法(希尔排序) (快速排序)c语言版
希尔排序
优化版的插入排序,优化的地方就是步长(增量)增大了,原来的插入排序的步长(增量)是1,而希尔排序的步长(增量)可以很大,然后逐渐减小直到1形成插入排序 也叫(减小增量排序) 若不了解,可看之前发布的希尔排序 void shellSort1(int arr[],int length){for(int i=interval;i<arr.length;i+=interval){int target=arr[i];int j=i-interval;while(target<arr[j]){arr[j+inertval]=arr[j];j-=interval;}arr[j+interval]=target;} } 个人感觉shellSort2更复杂一些。 void shellSort2(int arr[],int length){int h=4;while(h>=1){for(int i=h;i<length;i++){for(int j=i;j>=h&&arr[j]<arr[j-h];j-=h){int temp=arr[j];arr[j]=arr[j-h];arr[j-h]=temp;}}h/=2;} }shellSort1的增量为length/2,不断取半 个人感觉shellSort1更好用,shellSort2复杂一些,shellSort更复杂。 经典的希尔序列1,4,13,.....,3*n+1 void shellSort3(int arr[],int length){int h=1;int t=length/3;while(h<t)h=3*h+1;//让步长(增量)在length左右//shellSort2的步长给锁死成4了,不过挺好用while(h>=1){for(int i=h;i<length;i++){for(int j=i;j>=h&&arr[j]<arr[j-h];j-=h){int temp=arr[j];arr[j]=arr[j-h];arr[j-h]=temp;}}h/=3;} }
快速排序
冒泡排序的优化版本,核心思想:使用轴,每一轮左右递归后,把轴放到中间,使得轴的左边都比轴小,轴的右边东渡比轴大,当所有的递归都结束了就自然排序好了
pivot:轴(主元)一般选第一个元素
需要用到双指针,一个左指针,一个右指针
左指针找比轴(主元)大的,右指针找比轴(主元)小的
然后二者值交换
void quickSort(int arr[],int left,int right){if(left>=right)return;int i=left;//左指针int j=right;//右指针int pivot=arr[i];//该整体第一个元素,并将主元提取出来while(i<j){while(i<j&&arr[j]>=pivot)j--;//找右边第一个小于pivot的值arr[i]=arr[j];//然后把小于pivot的值给主元所在位置while(i<j&&arr[i]<=pivot)i++;//找左边第一个大于pivot的值arr[j]=arr[i];将该值赋给第一个小于pivot的值//保留一个空位,即原来主元空出来的位置,可用于值的交换//左指针每找到一个大于pivot的值,就停下,右指针每找到一个小于pivot的值,就停下,然后二者互换// while(i<j&&arr[i]<=pivot)循环条件添加i<j是因为,在while(i<j)这个大循环中,仍有两个while嵌套,第一个while结束后,第二个while会继续执行,i和j的位置就彼此越界了}arr[i]=pivot;quickSort(arr,left,i-1);quickSort(arr,i+1,right);}(第二种写法)void swap(int arr[],int i,int j){//换值函数int temp=arr[i];arr[i]=arr[j];arr[j]=temp;}
void quickSort2(int arr[],int left[],int right){//另一种快速排序的样例if(left>=right)return;int pivot=arr[left];int i=left+1;//这里有两个指针int j=left+1;while(j<=right){//每轮循环,j都向右移一位if(arr[j]<pivot){//如果j指向的值小于pivotswap(arr,i,j);//则交换i和j的值i++;//每次将小于pivot的值移到左边,i右移一位,i就用于等待交换的位置,每次j找到小于pivot的值,都与i位置上的数交换}j++;//j用于寻找小于pivot的值}swap(arr,left,i-1);//while循环结束后,i最后+1了,所以i-1为最后一个小于pivot的值的位置,因此将主元left上的值与i-1的值交换quickSort2(arr,left,i-2);//主元左边quickSort2(arr,i,right);//主元右边
}
相关文章:
蓝桥杯算法基础(13):十大排序算法(希尔排序) (快速排序)c语言版
希尔排序 优化版的插入排序,优化的地方就是步长(增量)增大了,原来的插入排序的步长(增量)是1,而希尔排序的步长(增量)可以很大,然后逐渐减小直到1形成插入排…...
web学习笔记(三十二)
目录 1.函数的call、apply、bind方法 1.1call、apply、bind的相同点 1.2call、apply、bind的不同点 1.3call、apply、bind的使用场景 2. 对象的深拷贝 2.1对象的浅拷贝 2.1对象的深拷贝 1.函数的call、apply、bind方法 1.1call、apply、bind的相同点 在没有传参数时&…...
Android 地图SDK 绘制点 删除 指定
问题 Android 地图SDK 删除指定绘制点 详细问题 笔者进行Android 项目开发,对于已标记的绘制点,提供撤回按钮,即删除绘制点,如何实现。 解决方案 新增绘制点 private List<Marker> markerList new ArrayList<>…...
Nodejs 第五十八章(大文件上传)
在现代网站中,越来越多的个性化图片,视频,去展示,因此我们的网站一般都会支持文件上传。 文件上传的方案 大文件上传:将大文件切分成较小的片段(通常称为分片或块),然后逐个上传这…...
Linux编译器--gcc/g++的使用
1. gcc与g gcc与g分别是c语言与c代码的编译器,但同时g也兼容c语言。 我们知道在Linux中,系统并不以文件后缀来区分文件类别。但对于gcc与g等编译器而言却是需要的。Linux中c代码文件的后缀是.c,c代码文件的后缀是.cpp(.cc)(.cxx)。 在Linu…...
苍穹外卖-day13:vue基础回顾+进阶
vue基础回顾进阶 课程内容 VUE 基础回顾路由 Vue-Router状态管理 vuexTypeScript 1. VUE 基础回顾 1.1 基于脚手架创建前端工程 1.1.1 环境要求 要想基于脚手架创建前端工程,需要具备如下环境要求: node.js 前端项目的运行环境 学习web阶段已安…...
蓝桥杯/慈善晚会/c\c++
问题描述 热心公益的G哥哥又来举办慈善晚会了,这次他邀请到了巴菲特、马云等巨富,还邀请到了大V、小C等算法界泰斗。晚会一共邀请了n位尊贵的客人,每位客人都位于不同的城市,也就是说每座城市都有且仅有一位客人。这些城市的编号为…...
2024.3.19
思维导图...
【Python】新手入门学习:详细介绍单一职责原则(SRP)及其作用、代码示例
【Python】新手入门学习:详细介绍单一职责原则(SRP)及其作用、代码示例 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyT…...
【DataWhale学习笔记】使用AgentScope调用qwen大模型
AgentScope AgentScope介绍 AgentScope是一款全新的Multi-Agent框架,专为应用开发者打造,旨在提供高易用、高可靠的编程体验! 高易用:AgentScope支持纯Python编程,提供多种语法工具实现灵活的应用流程编排ÿ…...
【C++】手撕AVL树
> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:能直接手撕AVL树。 > 毒鸡汤:放弃自…...
探索 TorchRe-ID--基于 Python 的人员再识别库
导言 人员再识别(re-ID)是计算机视觉中的一项重要任务,在监控系统、零售分析和人机交互中有着广泛的应用。TorchRe-ID 是一个功能强大、用户友好的 Python 库,它为人员再识别任务提供了一套全面的工具和模型。在本文中࿰…...
鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Flex)
以弹性方式布局子组件的容器组件。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。Flex组件在渲染时存在二次布局过程,因此在对性能有严格要求的场景下建议使用Column、Row代替。Flex组…...
tmux最基础的一点应用-不用一直挂着ssh,可以干点别的事情
文章目录 使用原因基础命令创建一个窗口退出当前窗口重新进入万一忘记了环境名字想要删除环境 使用原因 跑程序要很久,需要干别的事情,电脑不能一直开,可以使用tmux来管理。 基础命令 创建一个窗口 tmux new -s <你自己起的环境名字&g…...
Java推荐算法——特征加权推荐算法(以申请学校为例)
加权推荐算法 文章目录 加权推荐算法1.推荐算法的简单介绍2.加权推荐算法详细介绍3.代码实现4.总结 1.推荐算法的简单介绍 众所周知,推荐算法有很多种,例如: 1.加权推荐:分为简单的特征加权,以及复杂的混合加权。主要…...
探索什么便签软件好用,可以和手机同步的便签软件
在信息技术日新月异的今天,各类数字工具已经成为我们生活与工作的重要助手。便签软件作为一种简单却高效的辅助工具,悄然改变着人们的记录习惯与时间管理方式。而在诸多便签软件中,能够实现手机与电脑同步功能的产品尤显其独特的价值。那么&a…...
字符函数与字符串函数
前言 本次博客可以说内容最为多的一次博客,讲解同样很细致大家好好看看 1字符函数 在讲解字符函数时,大家得了解什么是字符吧 普通字符a b c 1 转义字符 \n 换行‘ \t’ 水平制表符\r回车 大家了解即可 在C语言中字符也可以有分类 所以我们先来看看…...
Kubernetes 项目整体布局 el-container
整体布局整体布局 你可能会去敲不同的项目,有很多种平台。那么其实都是可以复用的。唯一不同的就是main里面的内容是不同的,边框架子都是相同的。其实框架是不怎么变化的,变化的是main里面。 src/layout/Layout.vue 这里需要新增一个页面Lay…...
AI赋能写作:AI大模型高效写作一本通
❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作…...
unraid docker.img扩容
unraid 弹Docker image disk utilization of 99%,容器下载/更新失败 我的版本是6.11.5,docker.img满了导致容器不能更新,遇到同样问题的可以先用docker命令清除一下仓库(当然不一定能清理出来,我已经清理过只清理出来1G多点&…...
六挡手动齿轮变速器设计【说明书、CAD图纸、 开题报告、任务书 ……】
六挡手动齿轮变速器作为汽车传动系统的核心部件,其设计需兼顾动力传递效率与驾驶操控性。该变速器通过齿轮组的啮合与分离实现六个前进挡位的切换,每个挡位对应不同的齿轮传动比,既能满足车辆起步时的大扭矩需求,也能在高速巡航时…...
基于R语言的自动数据收集:网络抓取和文本挖掘实用指南【1.7】
3.5 XML和R的实践现在让我们转到实际例子。XML文件在R会话中如何查看、如何导入、如何访问,以及如何把来自XML文档的信息转化为更便于进一步图形化或统计化分析的数据结构,例如常规的数据框(data frame)呢?正如我们前面…...
二次元创作工场:OpenClaw+Qwen3.5-9B自动化漫画脚本生成
二次元创作工场:OpenClawQwen3.5-9B自动化漫画脚本生成 1. 当AI助手遇上二次元创作 去年夏天,我作为独立漫画创作者陷入了创作瓶颈——每周要完成20页的连载更新,但80%的时间都耗在反复修改脚本和分镜上。直到发现OpenClaw与Qwen3.5-9B的组…...
OpenClaw多模型切换指南:Qwen3-14B与本地小模型协同工作
OpenClaw多模型切换指南:Qwen3-14B与本地小模型协同工作 1. 为什么需要多模型协同? 去年冬天,当我第一次用OpenClaw自动处理周报时,发现一个尴尬的问题:简单的文件整理任务消耗了过多Token。我的Qwen3-14B模型像用高…...
Android音视频开发实战:MediaCodec同步解码避坑指南(附PTS矫正技巧)
Android音视频开发实战:MediaCodec同步解码中的PTS时间戳矫正与性能优化 在移动端音视频应用开发中,视频播放速度异常是个常见但令人头疼的问题。许多Android开发者都遇到过这样的场景:当你使用MediaCodec成功解码视频后,播放画面…...
Virtuoso ADE L仿真结果分析实战:用Calculator快速提取带宽、相位裕度和噪声
Virtuoso ADE L仿真结果深度解析:从波形到关键指标的实战技巧 面对仿真完成后满屏的波形曲线,许多工程师常陷入"数据丰富但信息匮乏"的困境。本文将聚焦两级运放案例,演示如何用Calculator函数精准提取GBW、相位裕度、噪声谱密度等…...
HJ165 小红的优惠券
题目题解(36)讨论(31)排行 入门 通过率:49.28% 时间限制:1秒 空间限制:256M 知识点贪心 校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。 描述 小红的购物车…...
2-4 避免踩坑:AI Agent架构的四大反模式(从百万美元事故看AI Agent设计的常见陷阱与规避策略)
过去两年,AI Agent项目从井喷式爆发到大量失败,暴露出许多共性问题。 通过分析这些失败案例,我总结了四类最常见的架构反模式(Anti-Patterns)。它们看似是捷径,实则是通往维护地狱的陷阱。 四大反模式架构对比 #mermaid-svg-OSytWDUbXJl85vKk{font-family:"trebuc…...
【26大英赛】全国大学生英语竞赛高频核心词汇表pdf电子版(考前必背单词)
2026年全国大学生英语竞赛进入最后冲刺阶段,考试日期定于4月12日。距离考试仅剩6天时间,备考工作刻不容缓。 为助力考生高效复习,现推出最新版竞赛核心词汇手册。该资料以PDF电子版形式提供,支持自由下载和打印使用,方…...
打卡信奥刷题(3071)用C++实现信奥题 P6951 [ICPC 2018 WF] Wireless is the New Fiber
P6951 [ICPC 2018 WF] Wireless is the New Fiber 题目描述 一种新型的无限带宽无线通信刚刚通过测试,并被证明可以替代现有的基于光纤的通信网络,后者正努力跟上流量增长的步伐。你被委托决定新通信网络的布局。当前的通信网络由一组节点(…...
