快速排序算法【数据结构-郝斌】

郝斌数据结构与算法自学视频教程 数据结构与算法本人看过不少教程包括李春葆老师、郝斌老师、罗吴蔓老师、严蔚敏他们的教程或者书籍,但是对于初学者来说我这边还是推荐郝斌老实的数据结构教程,0基础都能学的一套教程! 郝斌 郝斌,男,瑞德学校担任教学组长,曾在雅博等公司担任项目总监。6年开发经验,擅长C/C++ 、Java、 数据结构、数据库。具有十四年培训经验。郝斌老师所录制的计算机(编程)教学视频,很适合初学者。 郝斌人物评价 随堂写... 阅读详情

 方式1、将快速排序分为查找函数和排序函数;

#include <stdio.h>
/*查找函数*/
int Findpow(int *arr, int low, int high)
{
	int flag=arr[low]; //将需要查找位置的第一个数字赋值给flag;
	while (low < high)//边界条件;
	{
		while ((low<high) && (arr[high] >= flag))//当高位大于等于flag标志位时,应该将高位<<右移;
		{
			--high;//右移;
		}
		if (low < high)
		{
			arr[low] = arr[high];//当高位小于flag时,赋值给低位;
		}
		while ((low<high) && (arr[low] <= flag))//当低位小于等于flag标志位时,应该将低位>>左移;
		{
			++low;//左移;
		}
		if (low < high)
		{
			arr[high] = arr[low];//当低位大于flag时,赋值给高位;
		}
	}
	arr[low] = flag;//当low和high重合时,位置找到,将需要查找的数放进位置。
	return low;//将这个位置返回给排序函数;
}

/*排序函数【递归实现】*/
void QiuckSort(int *arr, int low, int high)
{
	int pow=0;//设置位置标志;
	if (low<high)
	{
		pow = Findpow(arr,low, high);//该位置将原来的线性数据分成两半;
		QiuckSort(arr, low, pow-1);//再将左边的数据查找切分;
		QiuckSort(arr, pow+1,high);//再将右边的数据查找切分;
	}
}


/*测试主函数*/
int main()
{
	int a[] = { 4, 1, -2, 56, 22, 4, 7, 52, 4, 8, 6, 2 ,-5};
	int num = sizeof(a) / sizeof(int);
	QiuckSort(a, 0, num-1);
	for (int i = 0; i < num; i++)
	{
		printf("%d   ",a[i]);
	}
	getchar();
	return 0;

}

 方式2、将快速排序合并为一个函数;

[合并时,主要是注意变量的改变问题]

#include <stdio.h>
/*快速排序函数【完整功能】*/
void QiuckSort(int *arr, int low, int high)
{
	
	if (low<high)
	{
		int pow;
		int flag;
		int nlow = low, nhigh = high;//在该函数内low和high属于全局变量,所以应该让局部变量改变,全局变量不变。
		flag = arr[low];
		while (nlow < nhigh)
		{
			while ((nlow<nhigh) && (arr[nhigh] >= flag))
			{
				--nhigh;
			}
			if (nlow<nhigh)
			{
				arr[nlow] = arr[nhigh];
			}
			
			while ((nlow<nhigh) && (arr[nlow] <= flag))
			{
				++nlow;
			}
			if (nlow < nhigh)
			{
				arr[nhigh] = arr[nlow];
			}
		}
		arr[nlow] = flag;
		pow = nlow;
		QiuckSort(arr, low, pow - 1);
		QiuckSort(arr, pow + 1, high);
	}
}

/*测试主函数*/
int main()
{
	int a[] = { 4, 1, -2, 56, 22, 4, 7, 52, 4, 8, 6, 2 ,-5};
	int num = sizeof(a) / sizeof(int);
	QiuckSort(a, 0, num-1);
	for (int i = 0; i < num; i++)
	{
		printf("%d   ",a[i]);
	}
	getchar();
	return 0;

}

 

数据结构——郝斌老师——部分笔记 数据结构数据结构概述预备知识模块一:线性结构连续存储[数组]离散存储[链表]线性结构的两种常见应用之一 栈线性结构的两种常见应用之二 队列专题:递归1.1+2+3+...+1002.求阶乘3.汉诺塔4.走迷宫模块二:非线性结构树图模块三:查找和排序折半查找排序冒泡插入选择快速排序归并排序Java中容器和数据结构相关知识Iterator接口Map哈希表 数据结构概述 定义: 算法: 预备知识 模块一:线性结构 连续存储[数组] 离散存储[链表] 线性结构的两种常见应用之一 栈 线性结构的两种常见应用之二 队列 阅读详情

相关推荐

郝斌数据结构视频课程:源代码与大纲详解

线性结构是数据结构中的一种,它具有以下几个主要特点:有序性:线性结构中元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。可数性:线性结构中的元素个数有限,且每个元素都有一个序号,可以依次进行遍历。线性关系:任何元素都只有一个直接前驱和直接后继(除第一个和最后一个元素外)。在线性结构的实现中,最简单的两种结构就是数组(Array)和链表(Linked List)。数组是一种静态的线性结构,它在内存中的位置是连续的;

weixin_35879493的博客 1100

郝斌数据结构之快排

快速排序的过程演示: 代码: [cpp] view plaincopy 来自郝斌老师数据结构   排序:   冒泡   插入:从头开始选择第2个按大小插入前2个之间,再将第3个按大小插入前俩个之间依次。。。   选择   快速排序:快排通过确定一个值的位置,然后将其分为二半,分别进行再次确定位置   归并排序:俩

菜菜鸟的成长记录 1144

郝斌老师数据结构视频教程(网盘文件永久有效)

郝斌老师数据结构基础视频精讲。(因视频文件较大,所以不能上传,所以将其放在了网盘里。网盘链接永久有效。下载该文档就可以看到链接及密码) 分享一点学习资料,希望和大家一起学习。

【郝斌】-数据结构入门

c指针笔记

qq_42241352的博客 503

Fast-LIO2轮速计融合实战:打滑检测与协方差调参避坑指南

多传感器融合是提升移动机器人定位鲁棒性的关键手段。在激光雷达与惯性测量单元(IMU)紧耦合的基础上,加入轮式编码器作为额外的速度约束,能够有效抑制长走廊、重复纹理等退化场景下的漂移。其核心原理是通过运动学模型将轮速转换为机体系速度,并作为因子引入迭代误差状态卡尔曼滤波器(ESIKF)。然而,打滑现象与协方差参数设置是融合成败的关键。本文从工程实践出发,系统梳理了传感器配置、外参标定、打滑检测策略(运动学一致性、轮速自洽性)以及观测噪声协方差R与初始协方差P0的调参方法,并给出实测参数与问题排查速查表,为在F

weixin_34159110的博客 433

产品必备技能(十):如何绘制原型图?先要绘制页面流程图+页面原型图!附实操原型图、流程图实例(抖音)

文章目录目标题目实操步骤模板实操【抖音】APP的视频发布功能页面流程绘制页面流程图合格标准绘制页面原型图合格标准 目标 新入行的产品经理都对原型抱有向往的心境,但是有经验的产品经理不会一上来就画原型,而是先画页面流程再来画原型。通过学习,你将学会如何用页面流程图规划用户行为路径、如何借助原型识别问题、减少风险、有效沟通。 题目 任意选择一款你喜欢的产品,体验某个功能,下载并梳理此功能至少5个以上的页面流程跳转点(后面会解释),还原2 - 3个主要界面的低保真原型图。 实操步骤 可使用手绘以及Process

汪雯琦的博客 4842

数据结构(郝斌老师)

郝斌老师数据结构笔记

incgdl的博客 1861

深入Linux网络子系统:STMMAC驱动如何通过MDIO总线与PHY芯片“对话”

本文深入解析了Linux网络子系统中STMMAC驱动通过MDIO总线与PHY芯片的通信机制。详细介绍了MDIO总线的注册流程、PHY设备的绑定机制以及设备树配置,帮助开发者理解MAC控制器与PHY芯片的协作基础,优化网络通信性能。

weixin_26897585的博客 448

郝斌数据结构第76节课堂程序——快速排序(简单升序)

#include<stdio.h> //2020 0330 6:36 int findpos(int* a,int low,int high)//此函数功能将数组的第一个元素位置找到 { int val; //临时值变量 ,储存第一个元素的值,将通过这个值与数组中的每个值进行比较。从而确定第一个元素的位置,用升序为例,最终结果一定是左边都是比自己小的元素,右边都是比自己大的元素...

midxuan的博客 279

LVGL colorwheel组件教程一(调色板)

【代码】LVGL colorwheel组件教程一(调色板)

摸鱼专家 436

灵境视界:基于云计算与深度学习的智能手语识别AR眼镜

灵境视界”不仅仅是一款AR眼镜,它代表了未来无障碍沟通设备的发展方向。随着云计算与深度学习技术的不断进步,未来我们将进一步优化识别算法,提升翻译精度,并扩展更多语言和手语类型,为全球听障人士提供更加全面的沟通解决方案。是一款融合了云计算与深度学习技术的增强现实(AR)眼镜,专为听障人士和手语使用者设计。这款眼镜不仅具备先进的AR显示功能,还能实时识别并翻译手语,打破听障人士与健听人士之间的沟通障碍,推动无障碍社会的建设。,让沟通无界,视界无限。

qq_62634009的博客 725

郝斌数据结构学习笔记(8)快速排序练习代码

郝斌数据结构p76简述了五种常用排序流程,以及详细讲解了快排算法原理及代码实现 重点内容: 冒泡 插入 选择排序 快速排序 归并排序 除了快排已经测试过,其他的自己再去找代码看并测试 笔记:本次笔记很简略 模块三 查找和排序 折半查找 排序 冒泡(自己找代码看懂测试) 插入 选择 快速排序(已测试) 归并排序 排序和查找的关系 排序是查找的前提 排序是重点 练习代码如下 #include<stdio.h> void Qu...

limx的博客 207

饥饿游戏搜索算法(HGS)详解:从生物激励到智能优化

饥饿游戏搜索算法(HGS)是一种受动物饥饿驱动觅食行为启发的智能优化算法。该算法通过模拟生物饥饿程度与觅食策略的关系,将个体适应度映射为饥饿感,并据此动态调整搜索行为。HGS的核心机制包括:1) 饥饿权重计算(W1/W2),2) 三种位置更新策略(随机探索、正向/负向协作),3) 自适应平衡参数E。算法通过迭代优化逐步改进解的质量,具有参数自适应、全局搜索能力强等特点,在复杂优化问题中表现出色。相比传统优化方法,HGS更注重个体内部状态对搜索行为的影响,实现了探索与开发的自然平衡。

qq_42212808的博客 155

数据结构 - 排序

郝斌版《数据结构》学习笔记 时间:2015.08.31 - 2015.09.05 冒泡(升序,12比,大放后面,再23比,...,直至最大的在最后面)     插入(2,3,4,依次插入值,保证插入值后的序列为有序的)     选择(后面所有的最小值依次排到最前)     快速排序     归并排序(22排,44排,88排...) 排序算法标准:时间,空间

sureGM的博客 321

YOLO26改进策略【卷积层】| CVPR 2024 可变形卷积 v4(DCNv4)无界权重提表达 + 线程合并降冗余,强化模型收敛速度

DCNv4(Deformable Convolution v4)是一种专为广泛视觉应用设计的高效算子,它对DCNv3进行了关键改进,有效解决了DCNv3存在的速度慢和表达能力受限等问题。

Limiiiing的博客 694

SAP成本核算的核心逻辑

SAP成本核算采用"计划-归集-分析"闭环管理,以CO模块为核心,集成PP、MM等模块。核算前需配置标准成本控制范围、成本中心等主数据。标准成本通过BOM和工艺路线计算(CK11N),采购和生产过程记录实际成本差异。制造费用通过成本中心归集,作业成本按实际耗用量分配。完工产品按标准成本入库,月末通过KO88结算工单差异,物料分类账(CKMLCP)还原实际成本。整个流程实现FI与CO数据同步,确保账务一致。关键事务码包括CK11N(成本估算)、MIGO(物料移动)、CO11N(报工)等。

金牌架构师 537

快速排序(超通俗...)

有不懂的算法,自己找点数据去试一遍,跟着代码走一遍,就基本可以弄懂了,这是郝斌老师说的 #include <cstdio> using namespace std; void quicksort(int a[], int l, int r) { if(l<r){ //终止递归条件: 左边界不小于右边界,即,范围内至少要有两个元素 int i=l, j=r, x=...

weixin_42765365的博客 185

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

数据结构(郝斌)

strcpy 是 C 语言标准库函数之一,用于字符串复制。它将源字符串的内容复制到目标字符串中,包括终止的空字符 \0。函数原型定义在 头文件中。eg:// 目的字符串,需要有足够的空间// 源字符串// 复制字符串printf("复制后的字符串: %s\n", dest);n个节点离散分配彼此通过指针相连每个节点只有一个前驱节点,每个节点只有一个后续节点首节点没有前驱节点,尾节点没有后续节点。一种可以实现“先进后出” 的存储结构 栈类似于箱子。

smplrl的博客 2268

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

郝斌数据结构

郝斌数据结构 链表程序 //Linklist #include<stdio.h> #include<malloc.h> #include<stdlib.h> //Node的结构体定义 typedef struct Node { int data; struct Node* pNext; }NODE, * PNODE; //函数声明 PNODE creat...

游戏弱鸡 677

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

郝斌老师【数据结构入门】之快速排序

#include<stdio.h> void QuickSort(int *, int, int); int FindPos(int *, int, int); //主要思想:通过移动和赋值的方式确定第一个元素的最终位置,然后在用同样的方法分别确定第一个元素的最终位置的左边一部分和右边一部分的第一个元素的最终位置,以此类推 int main(void) { int a[6] = { 2,1,0,5,4,3 }; int i; for (i = 0; i < 6; ++i)

Dandelion_2的博客 261

数据结构入门学习笔记——郝斌

数据结构入门学习笔记,记录数据结构学习中的大纲和概要,方便后续回顾

凌凌凌凌的博客 1295

数据结构(郝斌版知识点)

为已有的数据类型起个名字。使定义变量更加简便若在haha前面加上一个*两个变量时双链表:就是有两个指针域,但是前面的指针域只能指向前面,后面的指针域只能指向后面。循环链表:最后一个结点的指针域可以指向第一个结点。静态队列通常都必须是循环队列父节点和子节点)非常快在此讨论什么是泛型这里面同一种逻辑结构指的是都是树,或都是图这种。物理存储不同指的是使用数组或链表存储两种不同。

weixin_74393033的博客 842

郝斌_数据结构_快速排序源代码

郝斌《数据结构》课程源代码 快速排序的实现 用者自取,自由分享 /* * 时间:2021.01.25 * 内容:快速排序 */ #include <stdio.h> void QuickSort(int * , int , int ); int FindPos(int * , int , int ); int main(void) { int a[6] = {2, 1, 0, 5, 4, 3}; int i; QuickSort(a, 0, 5); //第二个参数表示第一个元

JUSTfFUN的博客 210

郝斌数据结构笔记01:课程笔记大纲

此数据结构笔记系列是笔者向东在学习郝斌老师【数据结构自学视频】这门课的学习记录,该课程可在哔哩哔哩免费学习,点击前面括号中课程名字可以直达课程页面。 同时欢迎大家关注我的微信公众号【程序员向东】,本公众号专注分享Python、爬虫学习资料与干货!后台回复「PYTHON」,送你一个学习大礼包! 1.学习大纲 数据结构概述 预备知识 模块一:线性结构 连续存储(实际上就是数组) ...

向东的笔记本 525

目录__编程_郝兵_数据结构

【郝斌】-数据结构入门 郝斌数据结构自学笔记–知识点+程序源代码 数据结构-郝斌主讲 仅目录,视频自己移步B站吧 文章目录数据结构概述预备知识定义:算法数据结构课的特点:地位:指针结构体动态内存的分配和释放模块一 线性结构数组 连续存储链表 离散存储线性结构的两种常见应用栈 【堆栈】队列【与时间有关的 队列 顺序】专题:递归1+2+3+...+100 的和求阶乘汉诺塔走迷宫模块二 非线性结构树图模块三 查找和排序折半查找排序冒泡插入选择快速排序归并排序java 中容器和数据结构相关知识Iterator接口

qq_44988404的博客 317

郝斌PHP视频教程,郝斌数据结构自学视频_IT教程网

资源名称:郝斌数据结构自学视频教程内容:┣━10_跨函数使用内存讲解及其示例┣━11_复习┣━12_连续存储数组的算法演示_1┣━13_连续存储数组的算法演示_2┣━14_链表的重要性┣━15_typedef的用法3┣━16_链表的定义┣━17_如果希望通过一个函数来对链表进行处理,我们至少需要接受链表的哪些参数┣━18_每一个链表节点的数据类型该如何表示的问题)┣━19_链表的分类┣━1_什么叫...

weixin_32484447的博客 148
上一篇: 二叉树构建和三种遍历算法实现等【数据结构-朱战立】
下一篇: 冒泡排序算法【数据结构-郝斌】
蓝莓派Alex
博客等级 码龄15年 147粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值