千家信息网

C言语疾速排序算法及代码

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,疾速排序是对冒泡法排序的一种改良。疾速排序算法 的根本思惟是:将所要停止排序的数分为阁下两个局部,个中一局部的一切数据都比别的一 局部的数据小,然后将所分得的两局部数据停止异样的划分,反复履行以上的划
千家信息网最后更新 2025年12月01日C言语疾速排序算法及代码

疾速排序是对冒泡法排序的一种改良。
疾速排序算法 的根本思惟是:将所要停止排序的数分为阁下两个局部,个中一局部的一切数据都比别的一 局部的数据小,然后将所分得的两局部数据停止异样的划分,反复履行以上的划分操作,直 到一切要停止排序的数据变为有序为止。
能够仅依据根本思惟对疾速排序的看法并不深,接下来以对n个无序数列A[0], A[1]…, A[n-1]采取疾速排序办法停止升序陈列为例停止解说。
(1)界说两个变量low和high,将low、high辨别设置为要停止排序的序列的肇端元素和最初一个元素的下标。第一次,low和high的取值辨别为0和n-1,接下来的每次取值由划分失掉的序列肇端元素和最初一个元素的下标来决议。
(2)界说一个变量key,接下来以key的取值为基准将数组A划分为阁下两个局部,通 常,key值为要停止排序序列的第一个元素值。第一次的取值为A[0],今后毎次取值由要划 分序列的肇端元素决议。
(3)从high所指向的数组元素开端向左扫描,扫描的同时将下标为high的数组元素顺次与划分基准值key停止比拟操作,直到high不大于low或找到第一个小于基准值key的数组元素,然后将该值赋值给low所指向的数组元素,同时将low右移一个地位。
(4)假如low仍然小于high,那么由low所指向的数组元素开端向右扫描,扫描的同时将下标为low的数组元素值顺次与划分的基准值key停止比拟操作,直到low不小于high或找到第一个大于基准值key的数组元素,然后将该值赋给high所指向的数组元素,同时将high左移一个地位。
(5)反复步调(3) (4),直到low的植不小于high为止,这时胜利划分后失掉的阁下两局部辨别为A[low……pos-1]和A[pos+1……high],个中,pos下标所对应的数组元素的值就是停止划分的基准值key,所以在划分完毕时还要将下标为pos的数组元素赋值 为 key。
(6)将划分失掉的阁下两局部A[low……pos-1]和A[pos+1……high]持续采取以上操作步调停止划分,直到失掉有序序列为止。
为了可以加深读者的了解,接下来经过一段代码来理解疾速排序的详细完成办法。

                    #include  #include  #define N 6 int partition(int arr[], int low, int high){ int key; key = arr[low]; while(low= key ) high--; if(low

运转后果:

排序前32    12    7    78    23    45排序后7    12    23    32    45    78

在下面的代码中,依据后面引见的步调一步步完成了疾速排序算法。接下来经过表示图来演示第一次划分操作。
在第一次划分操作中,先辈行初始设置,key的值是停止划分的基准,其值为要划分数 组的第一个元素值,在下面的排序序列中为第一个元素值32,同时将low设置为要排序数组中第一个元素的下标,第一次排序操作时其值为0,将high设置为要排序序列最初一个 元素的下标,在下面的排序序列中其第一次取值为5。先将下标为high的数组元素与key停止比拟,因为该元素值大于key,因而high向左挪动一个地位持续扫描。因为接下来的值为 23,小于key的值,因而将23赋值给下标为low所指向的数组元素。接下来将low右移一 个地位,将low所指向的数组元素的值与key停止比拟,由干接下来的12、7都小于key, 因而low持续右移扫描,直至下标low所指向的数组元素的值为78即大于key为止,将78赋值给下标为high所指向的数组元素,同时将high左移一个地位。接下因由于low不再小于high,划分完毕。需求留意的是,在停止划分的进程中,多是将扫描的值与key的值停止比照,假如小于key,那么将该值赋值给数组中的别的一个元素,而该元素的值并没有改动。 从图中可以看出这一点,所以需求在划分的最初将作为划分基准的key值赋值给下标为 pos的数组元素,这个元素不再介入接下来的划分操作。


第一次划分操作


第一轮划分完毕后,失掉了阁下两局部序列A[0]、A[1]、A[2]和A[4]、A[5],持续进 行划分,即对毎轮划分后失掉的两局部序列持续划分,直至失掉有序序列为止。


元素 排序 数组 下标 序列 接下来 局部 基准 指向 第一次 同时 地位 基准值 阁下 数据 有序 两个 步调 肇端 面的 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 什么是网络技术开发质量保障 数据库在地理信息系统中的作用 做小程序软件开发多少费用 网络安全重保报告 华擎b660主板支持服务器内存 sql连接数据库注册驱动 我的世界蛋壳服务器 城市之光连接不上服务器 数据库保障数据安全的意义 mysql数据库百度云教程 2020网络安全主题教育 菜刀数据库怎么进去 40个服务器安全加固小技巧 软件开发编程学习入门 nari网络安全 抖音上的mc服务器 江苏多功能软件开发专业服务 广州网络安全监报中心 歌尔软件开发职位怎么样 2网络安全手抄报防溺水 如何判断数据库是否有查询的学号 阿里云服务器发布在线三维模型 云网络技术前景 湖北航信安全接入服务器地址 数据库更新两个表关联表 数据库排序语句加条件怎么加 网络安全员行为规范准则 莱芜凤巢网络技术有限公司咋样 数据库行业分析 杨浦区软件开发信息推荐
0