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

26年1月23算法

基础算法

看ACWING崩溃一天

快速排序

点击查看代码
#include<iostream>
using namespace std;
const int N = 1e6+10;
int n;
int q[N];void quick_sort(int q[], int l, int r){// 递归终止条件:区间长度小于等于1时无需排序if(l >= r) return;// 初始化指针和基准值(取区间中间值作为基准,避免极端情况)int i = l - 1, j = r + 1, x = q[l + r >> 1];// 双指针遍历交换while(i < j){// i向右移动,直到找到大于等于x的元素do(i++); while(q[i] < x);// j向左移动,直到找到小于等于x的元素(修正了q[i]→q[j]和j++→j--)do(j--); while(q[j] > x);// 若i<j,交换两个元素if(i < j) swap(q[i], q[j]);}// 递归处理左右两个子区间quick_sort(q, l, j);quick_sort(q, j+1, r);
}int main(){// 输入数组长度scanf("%d", &n);// 输入数组元素for(int i = 0; i < n; i++) scanf("%d", &q[i]);// 调用快速排序quick_sort(q, 0, n - 1);// 输出排序后的数组(添加空格分隔)for(int i = 0; i < n; i++) printf("%d ", q[i]);return 0;
}
归并排序
点击查看代码
#include<iostream>
using namespace std;
const int N = 100010;
int a[N] , tmp[N];
void merge_sort(int q[] , int l ,int r){if( l >= r)return ;int mid = l +r >> 1;merge_sort(q , l , mid);merge_sort(q , mid+1 , r);int k = 0 , i = l , j = mid + 1;while(i <= mid&& j <= r){if(q[i] <= q[j])tmp[k++] = q[i++];else tmp[k ++] = q[j ++];}while(i <= mid)tmp[k++] = q[i++];while( j <= r)tmp[k++] = q[j++];for(int i = l,j = 0; i<= r;i ++ , j++)q[i] = tmp[j];
}
int main(){int n ; scanf("%d" , &n);for(int i = 0 ; i < n; i++)scanf("%d" , &a[i]);merge_sort(a , 0 , n-1);for(int i = 0 ; i < n ; i++)printf("%d " , a[i]);return 0;}
二分查找,不过还是有一点懵逼,每个情况该如何选择?(头大) 这是一道用整数二分查找解决的找一个数起点和终点的问题
点击查看代码
#include<iostream>
using namespace std;
const int N = 100010;
int q[N];
int n , m;int main(){scanf(" %d%d" , &n , &m);for(int i = 0 ; i < n ; i++)scanf("%d",&q[i]);while(m--){int x;scanf("%d" , &x);int l = 0, r= n -1;while(l < r){int mid = l + r >> 1;if(q[mid] >= x) r = mid;else l = mid + 1;}if(q[l] != x)cout << "-1 -1"<< endl;else{cout << l << ' ';int l = 0,r = n-1;while(l< r){int mid = l + r + 1 >> 1;if( q[mid] <= x) l = mid;else r = mid -1;}cout << l << endl;}}return 0;
}
http://www.jsqmd.com/news/290505/

相关文章:

  • 编辑标题
  • Java数据结构*Map和 Set*
  • Java毕设选题推荐:基于springboot的电子产品电子外设销售系统基于springboot的电子产品销售系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Java毕设选题推荐:基于springboot的动漫周边商城的设计与实现基于springboot的二次元商品商城系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 施耐德 KNX 系统赋能国家储能大厦:智能能源管理与 ESG 解决方案实践
  • Java毕设项目推荐-基于springboot的二次元商品购物商城系统基于springboot的二次元商品商城系统【附源码+文档,调试定制服务】
  • 花 6888 元拿下 PMP证书!到底是报班还是自学?
  • 导师严选2026 TOP8 AI论文写作软件:研究生开题报告神器测评
  • Java毕设项目推荐-基于SpringBoot+Vue的宠物咖啡馆平台管理系统基于springboot的宠物咖啡平台管理系统【附源码+文档,调试定制服务】
  • 【计算机毕业设计案例】基于springboot的宠物咖啡平台管理系统基于SpringBoot+Vue的宠物咖啡馆平台管理系统(程序+文档+讲解+定制)
  • 【计算机毕业设计案例】基于springboot的电子产品电子外设销售系统基于SpringBoot + Vue的手机电脑相机电子产品销售系统(程序+文档+讲解+定制)
  • 【计算机毕业设计案例】基于springboot的二次元商品商城系统基于springboot的二次元商品购物商城系统(程序+文档+讲解+定制)
  • 救命神器10个AI论文平台,本科生搞定毕业论文!
  • 清华公开课去哪儿看?北大公开课去哪儿看?抖音精选平台
  • 清北公开课在哪里看
  • AI驱动的技术栈演进建议:数据支持下的技术决策
  • Redis高级特性实战:从Bitmaps到位操作的应用场景
  • 计算机Java毕设实战-基于springboot的电子商品销售系统电子产品电子外设销售系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 计算机Java毕设实战-基于Springboot+Vue的动漫周边商场系统基于springboot的二次元商品商城系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Java计算机毕设之基于springboot的二次元商品商城系统基于SpringBoot与Vue的动漫周边商场系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • Ollama 学习与使用指南 (Windows Linux 版)
  • 【Da】交付面板
  • MySQL 数据库与表核心管理
  • 提示工程架构师携手Agentic AI,给智能城市来一场大升级
  • 案例证明法--内容学习
  • LiteFlow规则引擎使用指南
  • Redis Cluster 的数据分片机制
  • 提示工程架构师避坑指南:10个容易忽略的Prompt安全问题,必看!
  • 多班次制造业薪酬管理难题拆解:国内主流人事系统对比与选型建议
  • Java毕设项目:基于springboot的电子产品电子外设销售系统(源码+文档,讲解、调试运行,定制等)