首页 > 其他分享 >快速排序学习

快速排序学习

时间:2023-10-30 21:58:56浏览次数:31  
标签:sort do int scanf 学习 while quick 排序 快速

// #include<bits/stdc++.h>
#include<iostream>
using namespace std;
void quick_sort(int q[],int l,int r){
if (l>=r)return;
int x=q[(l+r)/2];
int i=l-1,j=r+1;
while(i<j){
do i++;while(q[i]<x);
do j--;while(q[j]>x);
if(i<j) swap(q[i],q[j]);
}
quick_sort(q,l,j);
quick_sort(q,j+1,r);
}
const int N=1e6+10;
int q[N];
int main(){
int n;
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]);}
}

快排在递归的时候处理左边,是从l到j,处理右边是从j+1到r。

思路:

1、如果只有一个数直接返回

2、设置分界点,直接选中间为分界点

3、当2个指针没有相遇的时候,就是i<j,让i移动到不满足q[i]<x

让j移动到不满足q[j]>x

4、如果指针还没相遇则交换2个数

5、递归处理右边和左边

标签:sort,do,int,scanf,学习,while,quick,排序,快速
From: https://www.cnblogs.com/wcy1234/p/17794141.html

相关文章

  • 快速编译QCMAP方法
    快速编译QCMAP方法:step1:cd/fibocom/huangguanyuan/sa522/sa525m_le/SA525M_apps/apps_proc/pokystep2:DISTRO=qti-distro-tele-debugMACHINE=sa525msourceqti-conf/set_bb_env.shstep3:bitbakesystemd|tee-abuild_systemd_log.txtbitbakedata|tee-ab......
  • mall学习笔记(7)
    1.使用mybatis插入失败了,开个log:application.ymllogging:level:com.example.demo.mbg.mapper:trace观察log,发现手动输入的json格式有问题,那没事了。2. @PathVariable映射URL绑定的占位符通过@PathVariable可以将URL中参数传到处理方法的中 小程序端:换......
  • linux的学习
    1.文件目录: 常用的命令1.pwd命令 pwd:printworkingdirectory,即显示当前所在目录 2、cd命令 cd:changedirectory,即切换/改变所在目录 '.’:代表此层目录;‘..’:代表上一层目录;‘-’:代表前一个工作目录;‘~’:代表“当前登陆用户身份”所在的主目录;3.创建一个新......
  • SpringMVC-快速返回逻辑视图
    今天完成了SpringMVC-快速返回逻辑视图,可以看作是springmvc一个非常基础的demo效果: 代码:index.jsp<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>Title</title></head><body>......
  • 排序(按照第一元素)
    按照元素的第一顺序排序//maybe贪心会用到structty{ intx,y;}a[N];boolcmp(tya,tyb){ if(a.x<b.x)returntrue; returnfalse;}intmain(){ intn; cin>>n; for(inti=1;i<=n;i++) { cin>>a[i].x>>a[i].y; } sort(a+......
  • 安卓平板,学习平板、三防工业平板Android主板定制方案
    近年来,平板设备在生活和工业领域应用不断增长。学习平板和工业intelligent设备的销量都处在高速发展阶段。预计到2024年,我国平板总出货量将继续增长。安卓平板采用高度集成设计,将多媒体解码、液晶驱动、USB接口、以太网、HDMI输出、TF卡插槽、WiFi、人体感应、串口、......
  • 学习笔记8
    第5章定时器及时钟服务1.个人计算机定时器定时器原理定时器是一种硬件或软件设备,用于在指定的时间间隔内产生时间戳或触发事件。在个人计算机中,定时器分为两类:实时定时器和普通定时器。实时定时器用于精确地控制实时任务,而普通定时器则用于一般性的事件控制。定时器驱动程序......
  • javaweb学习每日总结-第十天
    第十天学习今天我没有学习什么新的知识,而且回顾我之前所学习的一切的java知识,陷入了思考。一切都是因为今天王建民老师的考试,今天的考试,我取得了相对比较优异的成绩。考试一共一个小时,虽然结果还不错,但是我心里明白,我的技术还相当不熟练,一旦动起手来敲代码,我好像就迷失了方向,我想......
  • jupyter_机器学习基础
    学习打他frame和一些基础操作importpandasaspdimportnumpyasnppd.DataFrame(np.random.randn(2,3))score=np.random.randint(40,100,(10,5))scorescore_df=pd.DataFrame(score)score_dfsubjects=['语文','数学','英语','体育',&#......
  • [Vue学习]使用Vue-cli脚手架快速搭建项目
    安装vue-cli3npminstall-g@vue/cli验证vue版本vue--version 使用vuecreate项目名创建(需要cd进具体的目录)npmrundev(运行)npmrunbuild(编译)(也可以使用vue ui界面图形化方式进行创建) ==================================================可以直接使用下面方式创建项......