考研算法第26天:快速排序【快排模版】

44 篇文章 0 订阅
订阅专栏
20 篇文章 0 订阅
订阅专栏
17 篇文章 0 订阅
订阅专栏

题目:

我自己的快排:

就是过不了,好像这道题的测试样例有问题

(84条消息) 快速排序法(详解)_李小白~的博客-CSDN博客_快速排序

这个人讲的很详细

我的

#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <stdio.h>
int a[100000];
void quick_sort(int *a,int l,int r){
	int i=l,j=r,value=a[i];
	if (l < r){
		while (i < j){
			while (i < j && a[j] >= value){
				j--;
			}
			if (i < j){
				a[i]=a[j];
				i++;
			}
			while (i < j && a[i] <= value){
				i++;
			}
			if (i < j){
				a[j]=a[i];
				j--;
			}
		}
		a[i] = value;
		quick_sort(a,l,i-1);
		quick_sort(a,i+1,r);
	}
}
int main(){
	int n;
	scanf("%d",&n);
	for (int i=1; i<=n; i++){
		scanf("%d",&a[i]);
	}
	quick_sort(a,1,n);
	for (int i=1; i<=n; i++){
		printf("%d ",a[i]);
	}
	return 0;
}

y总的:

#include <iostream>
using namespace std;
 
int a[100000];
 
void quick_sort(int l,int r){
    if(l>=r) return ;
    cout<<"I:"<<l<<"r:"<<r<<" "; 
    int mid = (l+r) >> 1;
	int i=l-1, j=r+1,value=a[mid];
	cout<<"value:"<<value<<" ";
	while(i<j){//这里是i<j而不是l<r因为这个while循环是将此时选定的value的左边和右边
	//大小区分开 所以是用代表这一次循环的i和j来进行循环
	do i++; while(a[i]<value&&i<j);
	do j--; while(a[j]>value&&i<j);	 
	 if(i<j) swap(a[i],a[j]);
	}
	
	for(int i=0;i<=r;i++){
		cout<<a[i]<<" ";
	} 
	cout<<"j:"<<j<<endl;
	quick_sort(l,j);
	quick_sort(j+1,r);
	
}
 
int main(){
	int n;
	cin>>n;
	cout<<"n:"<<n<<endl;
	for (int i=0; i<n; i++){
		scanf("%d",&a[i]);
	}
	quick_sort(0,n-1);
	for (int i=0; i<n; i++){
		printf("%d ",a[i]);
	}
	return 0;
}

更加详细的讲解

#include <iostream>

using namespace std;

const int N = 1000010;
int q[N];
void quick_sort(int l,int r){
    if(l>=r) return;
    int i = l-1,j = r+1;
    //y总的数据增强了,至于为啥这样就不会超时,
    //我也母鸡
    int rnd_idx = rand() % (r - l + 1) + l;
    swap(q[rnd_idx],q[l]);
    int x = q[l];
    while(i<j){
        do i++; while(q[i]<x);
        do j--; while(q[j]>x);
        //这里注意需要多一个这样的判断,不然会多换一次
        //比如样例中的3 1 2 4 5
        //当换到左边区间换到1 2 的时候
        //i 还是满足 i<j 的
        //但是当再进入循环的时候,如果不对i<j的条件判断
        //再换一次,就会导致1 2 变成 2 1
        if(i<j)swap(q[i],q[j]);
    }
    //注意边界由于一般最终跳出来之后j=i-1,所以j做左区间的右边界最好
    quick_sort(l,j);
    quick_sort(j+1,r);
    return;
}
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++)scanf("%d",&q[i]);
    quick_sort(0,n-1);
    for(int i=0;i<n;i++)printf("%d ",q[i]);
    return 0;
}

考研】数据结构考点——快速排序(重点,含408真题)
qq_34438969的博客
08-18 1106
本文内容源于对《数据结构(C语言版)》(第2版)、王道讲解学习所得心得、笔记整理和总结。交换排序的基本思想:两两比较待排序记录的关键字,一旦发现两个记录不满足次序要求时则进行交换,直到整个序列全部满足要求为止。交换排序的主要两种方法:冒泡排序、快速排序本文内容主要针对快速排序。(快排,要求要掌握其算法,是考研中的重点考查内容)在本文最后的练习中,以举例子说明该排序方法,配以图文,讲解详细(含408真题)。.........
快速排序考研详解
深度Face的博客
05-22 5258
考研题目 排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一“趟”。下列排序中,不可能是快速排序第二趟结果的是()【2019年全国试题10(2分)】 A. 5, 2, 16, 12, 28, 60, 32, 72 B. 2, 16, 5, 28, 12, 60, 32, 72 C. 2, 12, 16, 5, 28, 32, 72, 60 D. 5, 2, 12, 28, 16, 32, 72, 60 答案:D 原因:每经过一趟快排,轴点元素都必然就位。也就是说,一趟下来至少有1个元素在其最
考研算法——快速排序
新海说
12-02 608
1.什么是快速排序快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序快速排序的关键是找到point基准点,传入数据先与point比较,然后分到数据一侧,整个排序过程可以递归...
考研数据结构与算法之排序专题一 快速排序
For_dongyang的专栏
01-31 926
基本思想:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,已达到整个序列有序。 一趟快速排序的具体做法是:附设两个指针low和high,他们的初值分别为low和high,设枢轴记录的关键字为pivotkey,则首先从high所指位置起向前搜索找到第一个关键字小于pivotkey的记录和枢轴记录互相交换,然后从low
[考研408]数据结构算法题——快速排序模板
WonsWing的博客
11-02 1182
拿数组最左边的元素作为枢轴元素(即用来作比较的那个元素),然后把右指针 j 移动到一个比枢轴元素小的数上(为了。(即相等),最终除了枢轴元素(它始终在最左边)外,i的左边肯定比枢轴元素小,右边肯定比枢轴元素大,,即这个数的位置是不合适的要换到左边去),把左指针移到比枢轴元素大的数上(为了。,即这个数的位置是不合适的要换到左边去),然后交换这两个不合适的位置的值(空间复杂度:o(nlogn) (注意不是o(1), 因为使用了堆栈)时间复杂度:o(nlogn)
考研-排序算法
忘眠的博客
05-31 260
文章目录六、排序大纲分类及稳定性分析代码【模板快速排序题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示 六、排序 大纲 六、排序   (一)排序的基本概念 (二)插入排序   1.直接插入排序   2.折半插入排序 (三)气泡排序(bubble sort) (四)简单选择排序 (五)希尔排序(shell sort)   (六)快速排序 (七)堆排序   (八)二路归并排序(merge sort) (九)基数排序   (十)外部排序 (十一)排序算法的分析与应用 分类及稳定性分析 根据是
《啊哈算法》相关链接收集
青少年趣味编程
02-25 520
第1章 一大波数正在靠近——排序 1 shaguabufadai的博客_Robin_just_CSDN博客 第1节 最快最简单的排序——桶排序 2 【坐在马桶上看算法算法1:最快最简单的排序——桶排序 - 啊哈磊 - 博客园 第2节 邻居好说话——冒泡排序 7 【坐在马桶上看算法算法2:邻居好说话:冒泡排序 - 啊哈磊 - 博客园 第3节 最常用的排序——快速排序 12 【坐在马桶上看算法算法3:最常用的排序——快速排序 - 啊哈磊 - 博客园 快速排序(过程图解)_第一楼
计算机考研复试题(近十万字)
果果冻冻的博客
04-03 7444
本文为博主考研期间准备的知识点,涵盖本科大部分内容,其中大部分在复试期间准备的。复试非常非常重要,准备的越充分越好,希望大家重视。本文内容为本人自己总结及从其他地方看到的一些资源。格式凌乱,后续会慢慢整理,祝各位前程似锦!
保研面试/考研复试英语口语常见问题整理
热门推荐
weixin_43595277的博客
09-27 2万+
写在前面:本英语菜鸡六级只有480,所以整理的答案水平不咋高,大佬勿喷嗷,共享万岁! 常用词 推荐免试入学研究生:Postgraduate Candidates Exempt from Admission Exam 推免研究生:Promotion and exemption of graduate students 夏令营:summer camp 优秀营员:excellent camper 本科: undergraduate 文凭: diploma 研究生: postgraduate
快速排序的两种方法C++实现
03-11
快速排序的两种方法C++实现。 快排有2种方法,虽然最后的排序结果是相同的,但是单次排序后的顺序可能是不同的,这一点值得注意。尤其是考研党,要手写快排的详细过程的时候,一定按照要求,不然即使是对的,也因为...
考研排序算法C++实现
11-02
考研排序算法C++实现
【数据结构考研】九种内部排序算法代码及排序过程图示
07-19
本资源包含《数据结构》考研的九种内部排序算法考点的算法代码及排序过程图示,以表格、图文方式详细讲解每一种排序算法的排序过程。 包含的九种内部排序有:直接插入排序、折半排序、希尔排序、冒泡排序、快速排序...
考研常考的二叉树相关算法总结(详细全面,PDF版)
11-16
主要针对考研常考的二叉树相关算法,包括但不限于对普通二叉树的构造、查找、插入元素、(先序、中序、后序、层序)遍历,并含递归和非递归方式等的算法、求二叉树的深度、删除二叉树中以某个结点为根结点的子树、...
考研408数据结构算法背诵
01-02
考研408数据结构算法背诵,4087中常用算法合集。包含常用的线性表、树、查找、排序的各种操作。(例如树,包含建树、遍历。。。)大部分是最基本的操作,对于应付考试应该是够了。还有整理的快排精简版,背诵更加...
java技术专家面试指南80问【java学习+面试宝典】(六)
fengbeely的博客
06-15 772
CPU缓存从内存读数据时,是按缓存行读取的,即使只用到一个变量,也要将整行数据进行读取,这行数据量可能包含其他变量。当多个线程同时修改同一个缓存行里的不同变量时,由于同时只能有一个线程在操作,所以相比将每个变量放到不同缓存行里,性能会有所下降。多个线程同时修改了同一个缓存行上的不同变量,由于不能并发修改,所以称为“伪共享”。孤儿卷是未与任何容器关联的卷。在 Docker v。1.9 之前的版本中,删除这些孤儿卷存在很大问题。
影子,介绍一下自己
yingzi的技术博客
06-09 479
个人介绍
人工智能(AI)的基础核心技术
qqk808的博客
06-12 391
人工智能(AI)的基础核心技术
java技术专家面试指南80问【java学习+面试宝典】(七)
最新发布
fengbeely的博客
06-15 734
索引是一种数据结构,可以帮助我们快速的进行数据的查找。在Java中,可以将一个类的定义放在另外一个类的定义内部,这就是 内部类。内部类本身就是类的一个属性,与其他属性定义方式一致。1)计算机体系结构是指那些能够被程序员看到的计算机的属性。如指令集、数据类型等;2)计算机组成是指如何实现计算机体系结构所体现出来的属性;3)以乘法指令为例,计算机是否有乘法指令,属于体系结构的问题。乘法指令是采用专用的乘法器,还是使用加法器和移位器构成,属于计算机组成的问题。1.mycat的全局id方案。
数据结构考研算法模板pdf
11-22
同时也包含了各种经典算法的实现代码,比如排序算法、查找算法、图论算法等。还会包含一些辅助理论和概念,比如时间复杂度、空间复杂度、动态规划、递归等。通过这份pdf文档,考生可以系统地复习和掌握数据结构和...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 关于dvc++无法调试的问题 3629
  • 关于如何将代码推到自己的gitee分支上去 2587
  • 考研算法29天:希尔排序 【希尔排序】 1690
  • 计算机网络实验第一课:HTTP和DNS 1492
  • 考研机试刷题第二天:任意进制转任意进制【高进度短除法】 1312

分类专栏

  • c++ 44篇
  • acwing 17篇
  • C语言 20篇
  • dvc++ 17篇
  • mysql 2篇
  • 双指针 9篇
  • 二分 2篇
  • 前缀和 3篇
  • 差分 2篇
  • 高精度 1篇
  • 区间合并 1篇
  • 数据库
  • 归并算法 1篇
  • 递归算法
  • java 1篇

最新评论

  • 关于我对于我各科的学习计划(万事开头难)

    l东东羊l: 给你点赞,向你学习

  • 考研总计划(基础篇)

    空が笑っています: 可以自己动态调整,只要每天自己的任务完成了就行,我也不是严格按照这个走的,有课如果不是啥硬课我一般是不听的,但是我们学校大三下确实轻松表情包

  • 考研总计划(基础篇)

    2401_83253122: 3月大三下还在上课表情包

  • 南大实验pa0:安装环境

    qq_45544376: thank you

  • 关于dvc++无法调试的问题

    空が笑っています: 哈哈哈哈,有用就好。

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 考研总计划篇
  • 考研总计划(基础篇)
  • 寒假计划(待定)
2024年2篇
2023年77篇
2022年56篇
2021年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司上饶关键词排名包年推广多少钱合肥网站优化排名推荐平顶山企业网站制作推荐湘潭网站制作多少钱酒泉SEO按效果付费推荐萍乡推广网站多少钱宜宾网站优化重庆高端网站设计多少钱阜阳seo网站优化价格金昌网络营销报价爱联网站改版推荐抚州建设网站价格绍兴建网站哪家好湘潭网页制作多少钱玉树设计公司网站多少钱哈尔滨百度网站优化排名公司晋城网页设计推荐宜宾SEO按天计费报价沧州设计网站报价推广网站推荐衡水网站制作设计公司西安网页设计推荐那曲网络营销多少钱贺州建设网站多少钱辽源营销网站推荐清徐网站改版价格霍邱品牌网站设计价格咸宁网站优化按天收费推荐十堰模板制作多少钱南山网站优化按天扣费公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化