归并排序 刷题笔记

归并排序的写法

归并排序

分治+双指针

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;

}

相关推荐
zhougl9964 分钟前
Java Spring Boot 爬虫技术全面介绍
java·spring boot·爬虫
奥莱维19 分钟前
【无标题】
java·前端·javascript
hanlin031 小时前
刷题笔记:力扣第189题-轮转数组
笔记·算法·leetcode
xqqxqxxq1 小时前
Redis 五大常用数据类型 + 通用命令笔记
数据库·redis·笔记
风流 少年1 小时前
Spring AI 2.0:Hello World
java·人工智能·spring
qq_589666051 小时前
Java继承
java·开发语言
八角.。1 小时前
面向对象-多态
java·开发语言
zjnlswd1 小时前
c# 刘铁猛 学习笔记
笔记·学习
@卓越俊逸_角立杰出@1 小时前
快速学会 Java 实现意图识别:从规则匹配到 BiLSTM 分类器
java·开发语言·人工智能