首页 > 其他分享 >w6 T325337 【模板】快速排序

w6 T325337 【模板】快速排序

时间:2023-04-12 18:44:09浏览次数:34  
标签:T325337 int mid w6 while num 排序 模板

 

主要思路:整体思路就是把<num[mid]的元素扔到mid左边,把>num[mid]的元素扔到mid右边,然后用同样的方法对mid左边和右边的序列进行处理。在代码实现上我使用了双指针。

以样例为例:

num[0]=4 num[1]=2 num[2]=4 num[3]=5 num[4]=1

mid=num[2] 第一次处理后:1 2 4 5 4

mid_left=num[0],mid_right=num[3] 第二次处理后:1 2 4 4 5

代码实现如下:

#include<iostream>
#include<algorithm>
using namespace std;
int n,num[100005];

void QuickSort(int A[],int l,int r){
  int i=l,j=r,mid=A[l+(r-l)/2];
  while(i<=j){
    while(A[i]<mid) i++; //找到比mid大的元素的下标
    while(A[j]>mid) j--; //找到比mid小的元素的下标
    if(i<=j){
      swap(A[i],A[j]); //交换之前找到的两个元素
      i++;
      j--;
    }
  }
  if(i<r) QuickSort(A,i,r); //递归,对mid右边的序列进行处理
  if(l<j) QuickSort(A,l,j); //递归,对mid左边的序列进行处理
}

int main()
{
  cin>>n;
  for(int i=0;i<n;++i) cin>>num[i]; //输入序列
  QuickSort(num,0,n-1); //快速排序
  for(int i=0;i<n;++i) cout<<num[i]<<" "; //输出排序后的数列
  cout<<endl;
  return 0;
}

搜索

复制

标签:T325337,int,mid,w6,while,num,排序,模板
From: https://www.cnblogs.com/ruiyifei/p/17310814.html

相关文章

  • helm模板文件chart编写语法
    一、简单介绍1、快速创建一个chart模板helmcreatemychartmychart├──charts├──Chart.yaml├──templates│  ├──deployment.yaml│  ├──_helpers.tpl│  ├──hpa.yaml│  ├──ingress.yaml│  ├──NOTES.txt│  ├─......
  • vue项目通过外部配置文件读取接口地址- 在webpack-index.html模板中使用环境变量
    概述:在index.html模板中判断当前环境,处于开发环境下时读取process环境变量、处于生产环境下时读取根目录配置文件(./config.js),两种环境下将配置统一挂载到window全局变量上(SET_CONFIG)config.jswindow.SITE_CONFIG={appTitle:'系统测试',version:'1.0.0',apiURL:''......
  • RT-thread 自设计线程(任务)模板
    按照模块化设计思想,每个功能任务对应一个线程,每个线程对应一个头文件和源文件。线程内使用的线程同步或通信的IPC,应提前声明和初始化。在所有线程启动前完成。单独成为一个函数。功能任务划分        1)功能任务独立,并行原则。        2)功能组......
  • Servlet注解的使用,简化配置 以及,使用模板方法设计模式优化oa项目
    Servlet注解的使用,简化配置以及,使用模板方法设计模式优化oa项目每博一文案有句谚语说:“一怒之下踢石头,只有痛着脚趾头。”比一件糟糕的事情更可拍的,是你用糟糕的态度去面对它。看过一个很有意思的故事:有个男人清早洗漱的时候,把自己的手表放在了桌子上。他的儿子不小心把手表......
  • 二分查找模板
    #include<iostream>usingnamespacestd;constintN=1e6+10;intn,m;intq[N];intmain(){cin>>n>>m;for(inti=0;i<n;i++)cin>>q[i];while(m--){intx;cin>>x;intl=0,r=n-1;whi......
  • Java 向 Word 模板插入数据(精要)
    PageOffice是一款实用的在线文档编辑工具,它让开发者能够轻松地向Word文档的特定部分动态地插入数据。在PageOffice中,这类特定部分主要涉及两个关键概念:数据区域(DataRegion)和数据标签(DataTag)。1.基本理念数据区域:数据区域实际上是一种特殊的Word书签对象,它位于Word文档......
  • js:模板解析实现2 -- 支持子列表
    难度是对于子循环列表的解析,比第一个实现有更好的解析效果和应用-----解析代码---/**调用形式tags.call({sid:'含解析html父级id',endFunc:解析结束执行Func},{listsObj});*能够使用注释的位置可以使用注释格式,不能使用时可以使用@.---photo--@来代替<!---photo-->......
  • 模板的全特化与偏特化
    模板为什么要特化,因为编译器认为,对于特定的类型,如果你能对某一功能更好的实现,那么就该听你的。模板分为类模板与函数模板,特化分为全特化与偏特化。全特化就是限定死模板实现的具体类型,偏特化就是如果这个模板有多个类型,那么只限定其中的一部分。先看类模板:template<typenameT1,......
  • 抖音小店运费模板如何设置?偏远地区不包邮设置教程
    在抖店里面,它默认的是所有商品都包邮,如果不去手动更改,那么像新疆西藏这种偏远地区产生的高额运费,就只能自己承担了,或者是及时发现选择不发货,这样又会被扣分扣保证金。创建运费模板1)选择【商品】,点击【商品创建】右边的【新建运费模板】​编辑切换为居中......
  • 电影网页设计模板代码 大学生电影网站设计与制作
    作品介绍大学生电影网站设计与制作html网页成品采用DIVCSS布局制作,主题为我的喜欢的电影榜单,作品包括1个首页和6个电影介绍子页面,共7个页面。整体设置了网页背景图片,首页顶部使用CSS3制作了LOGO鼠标经过放大效果,下方为6部电影封面图,点击可以进入电影介绍的子页面。每个电影子页面......