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

相关文章:

  • git删除远程分支和本地分支
  • Windows10+WSL2+Docker相关整理
  • IP--MGER综合实验报告
  • git 修改 更新
  • Red靶机攻略
  • 洛谷P2880 [USACO07JAN] Balanced Lineup G
  • Java面试新趋势:云原生与新兴框架实战解析
  • 计算机网络:(十二)传输层(上)运输层协议概述
  • Docmost:一款开源的Wiki和文档协作软件
  • 【Linux | 网络】传输层(UDP和TCP)
  • 电动汽车转向系统及其工作原理
  • 深入理解Linux网络-读书笔记(一)
  • 新手开发 App,容易陷入哪些误区?
  • 北京-4年功能测试2年空窗-报培训班学测开-第六十一天-模拟面试第一次
  • 数据结构基础内容(第二篇:线性结构)
  • 智谱AI GLM大模型 GLM-4-Plus的快速使用 ChatOpenAI类来调用GLM-4模型
  • 2025第15届上海生物发酵展将于8月7号启幕
  • HBuilder X打包发布微信小程序
  • PDF转图片实用指南:如何批量高效转换?
  • cuda编程笔记(10)--memory access 优化
  • 《P4568 [JLOI2011] 飞行路线》
  • Flutter开发实战之性能优化与调试
  • 自动标注软件X-AnyLabeling的使用教程
  • OpenLayers 综合案例-地图绘制
  • 深入理解Linux网络--读书笔记(二)
  • HDFS基础命令
  • 简易 BMI 身体质量指数计算器
  • 墨者:SQL注入漏洞测试(布尔盲注)
  • FastAPI入门:查询参数模型、多个请求体参数
  • (LeetCode 面试经典 150 题)71. 简化路径 (字符串)