归并排序 刷题笔记

归并排序的写法

归并排序

分治+双指针

1.定义一个mid

if(l>=r)return ;

2.分治

sort(q,l,mid);

sort(q,mid+1,r);

双指针

int i=l,j=mid,k=0;

将双序列扫入 缓存数组

条件 while(i<=mid&&j<=r)

两个数列比较大小 小的一方 进入缓存数组

扫尾

while(i<=mid) tempk++=qi++;

while(j<=r) tempk++=qj++;

复制 回去修改q\[\]数组的值

for (int i=l,j=0;i<=mid;i++,j++){

qi= tempj;

}

代码

include<iostream>

#include<cstdio>

#include<cstring>

#include<algorithm>

#include<sstream>

const int N=1e5+10;

int qN,tempN;

int n;

void quick_sort(int q\[\],int l,int r){

if(l>=r){

return ;

}

int mid =(l+r)>>1;

quick_sort(q,l,mid);

quick_sort(q,mid+1,r);

int i=l,j=mid+1,k=0;

while(i<=mid&&j<=r){

if(qi<=qj){

tempk++=qi++;

}else{

tempk++=qj++;

}

}

while(i<=mid){

tempk++=qi++;

}

while(j<=r){

tempk++=qj++;

}

for(int i=l,j=0;i<=r;i++,j++){

qi=tempj;

}

}

using namespace std;

int main(){

int n;

cin>>n;

for(int i=0;i<n;i++){

scanf("%d",&qi);

}

quick_sort(q,0,n-1);

for(int i=0;i<n;i++){

printf("%d ",qi);

}

return 0;

}

相关推荐
cfm_29142 分钟前
线程池阻塞队列
java·开发语言
坐吃山猪23 分钟前
【多线程】ThreadPool线程池参数说明
java·网络
evans在进步1 小时前
Java 常用设计模式(二):装饰器、适配器、责任链、模板方法、策略与观察者
java·开发语言·设计模式
jvmind_dev1 小时前
频繁 new JedisCluster 之后,对象池为什么回不去了?
java·后端
kyrie_sakura1 小时前
python学习笔记11 -- 进程和线程
笔记·python·学习
自小吃多1 小时前
PCB Editor软件差分对添加与设置笔记
笔记·嵌入式硬件
AKA__Zas1 小时前
文件 I/O(速通版
java·intellij-idea·学习方法
学长毕业设计1 小时前
基于SpringBoot的咖啡馆管理系统的设计与实现(源码+文档+讲解视频)
java·spring boot·后端
骇客野人1 小时前
SpringBoot业财一体化系统设计和落地实施方案
java·spring boot·后端
学长毕业设计2 小时前
基于SpringBoot的教学资源推荐系统的设计与实现(源码+文档+讲解视频)
java·spring boot·后端