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

7.25 C/C++蓝桥杯 |排序算法【下】

接上文的冒泡排序和选择排序:7.24 C/C++蓝桥杯 | 排序算法-CSDN博客

插入排序

  插入排序,类似打牌的时候排牌的操作,将新的牌  插入到  前边已经有序的牌之中。

代码:

结果:

快速排序

取其中一个值x,大于x放到x右边,小于x放到x左边,递归。

怎么放? 基准数x,从两边同时向中间扫,左边大于x的与右边小于x的元素交换位置

代码:

归并排序 

  1. 分解:将数组不断二分,直到每个子数组只包含一个元素
  2. 合并:将已排序的子数组合并,形成更大的有序数组

#include<bits/stdc++.h>
uisng namespace std;
const int N=1e5+9;
int a[N];
int main(){ios::sysnc_with_stdio(o),cin.tie(0),const.tie(0);int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];MergeSort(a[],1,n);for(int i = 1; i <= n; i ++)cout<<a[i] << ' ';}
void MergeSort(int a[], int l,int j){if(l==r)return ;//l=r  即当区间大小为1时,直接返回 ;也就是分解??int mid=(l+r)/2;MergeSort(a,l,mid);MergeSort(a,mid+1,r);int pl=l,pr=mid+1,pb=1;//起始索引 //有一边没有放完 while(pl<=mid||pr<=r){if(pl > mid){b[pb++]=a[pr++];} else if(pr > r){b[pb++]=a[pl++];}else{if(a[pl]<a[pr])b[pb++]=a[pl++];else b[pb++]=a[pr++];}}for(int i=l;i<=r;i++)a[i]=b[i];
}
//先递归进去,再回溯出来 

有空再更新 

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

相关文章:

  • macOS 安装 Homebrew
  • JavaScript事件(event)对象方法与属性
  • mac配置多版本jdk
  • C#中Visual Studio平台按照OfficeOpenXml步骤
  • Min-Max标准化​ 和 ​Z-score标准化
  • Python队列算法:从基础到高并发系统的核心引擎
  • LeetCode|Day27|70. 爬楼梯|Python刷题笔记
  • Spring Retry 异常重试机制:从入门到生产实践
  • Spring Boot自动配置原理深度解析
  • 适配IE11(通过Babel+core-js转译ES6语法)
  • Flutter 生命周期介绍
  • 几个注册中心的特性
  • 欧拉图与欧拉回路
  • 菜鸟的C#学习(四)
  • windows 10安装oracle(win64_11gR2)
  • 医疗AI语义潜空间分析研究:进展与应用
  • Unity 实时 CPU 使用率监控
  • IP--MGER综合实验报告
  • Linux驱动20 --- FFMPEG视频API
  • 回归预测 | MATLAB实现BiTCN双向时间卷积神经网络多输入单输出回归预测
  • AWS免费套餐全面升级:企业降本增效与技术创新解决方案
  • 《频率之光》
  • 详解赛灵思SRIO IP并提供一种FIFO封装SRIO的收发控制器仿真验证
  • 基于Django的天气数据可视化分析预测系统
  • Django实时通信实战:WebSocket与ASGI全解析(下)
  • 二、搭建springCloudAlibaba2021.1版本分布式微服务-Nacos搭建及服务注册和配置中心
  • mybatis的insert(pojo),会返回pojo吗
  • 激光SLAM技术综述(2025版)
  • springboot基于Java的人力资源管理系统设计与实现
  • Windows 11 安装 jdk 8