快速排序 c语言详解
今天学习并且编译了快速排序。
什么是快速排序呢?
快速排序要如何实现呢?
首先在编译程序之前对它的原理进行了解:
假如我们这里有一组不规则数列: A[]
快速排序首先需要找出一个基准数(tmp),然后从两边开始探测。我们分别设置两个变量(i),(j)去指向两边的数,先让j从右向左开始遍历,遇到比基准数小的则停止;再让i从左往右开始遍历,遇到比基准数大的便停止;此时让i所指向的数与j所指向的数交换;一直循环下去;当i与j重合时,将i/j指向的数与基准数交换位置,便可以得到,便可以得到一边全部小于基准数,另一边全部大于基准数的数列。
当i>j时,退出函数。
我们这里使用第一个数“7”作为基准。
接下来,将左边与右边分别进行排序;
逐次递归……
#include<stdio.h>
#include<string.h>void q_sort(int* a, int lo, int hi)
{int tmp = a[lo];int i = lo;int j = hi;int temp;if (i > j){return;}while (i != j)//只有当i小于j时进行以下程序{while (a[j] >= tmp && i < j){j--;}//j从右向左开始遍历while (a[i] <= tmp && i < j){i++;}//i从左往右开始遍历if (i < j){temp = a[i];a[i] = a[j];a[j] = temp;}//a[i]与a[j]交换位置}//基准点与中间点互换位置a[lo] = a[i];a[i] = tmp;q_sort(a, lo, i-1);q_sort(a, i+1, hi);
}int main()
{int a[] = { 34,45,21,32,43,67 };int n = sizeof(a) / sizeof(a[0]);int lo = 0;int hi = n - 1;q_sort(a, lo, hi);for (int i = 0; i < n; i++){printf("%d ",a[i]);}return 0;
}
快速排序 c语言详解相关推荐
- Drools 规则语言详解(上)
http://www.blogjava.net/guangnian0412/archive/2006/06/09/51574.html http://www.blogjava.net/guangnia ...
- 克鲁斯卡尔算法c语言,Kruskal算法(一)之 C语言详解
最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树. 例如,对于如上图G4所示的连通网可以有多棵权值总和 ...
- c++指针详解_c语言详解sizeof
一.sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++.--等. 它并不是函数. sizeof操作符以字节形式给出了其操作数的存储大小. 操作数可以是一个表达式或括在括 ...
- 排座系统c语言,2008noip排座位C语言详解.doc
2008noip排座位C语言详解 2008noip排座位C语言详解 2.排座椅 (seat.pas/c/cpp)D对同学上课时会交头接耳.同学们在教室中坐成了M行N列,坐在第i行第j列 的同学的位置是 ...
- 有向图邻接矩阵c语言编程,邻接矩阵有向图(一)之 C语言详解
本章介绍邻接矩阵有向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实 ...
- 邻接矩阵用c语言,邻接矩阵无向图(一)之 C语言详解
本章介绍邻接矩阵无向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实 ...
- 如何用c语言编写stm32的程序吗,STM32入门C语言详解
<STM32入门C语言详解>由会员分享,可在线阅读,更多相关<STM32入门C语言详解(6页珍藏版)>请在人人文库网上搜索. 1.最新 料推荐阅读 flash : 芯片内部存储 ...
- 顺序栈基本操作(入栈和出栈)C语言详解
#include <stdio.h> #include <stdlib.h> /*顺序栈基本操作(入栈和出栈)C语言详解栈的具体实现(1)顺序栈(2)链栈栈的应用(1)回退 ( ...
- c语言霍夫曼函数,使用C语言详解霍夫曼树数据结构
1.基本概念 a.路径和路径长度 若在一棵树中存在着一个结点序列 k1,k2,--,kj, 使得 ki是ki+1 的双亲(1<=i 从 k1 到 kj 所经过的分支数称为这两点之间的路径长度,它 ...
最新文章
- 用选框工具画圆角矩形
- lol全队消息怎么发_LOL女神公开新男友?亲密合照网友酸了,随后粉丝反应太真实...
- layui.use 在a标签内onclick调用
- Windows 常用消息大全系统消息、通告消息、用户消息
- SpringDataJpa 概述
- qtcpserver无法启动监听_EOS基础全家桶(四)启动节点
- gephi java教程_Gephi教程汇总
- 贪心算法(贪婪算法)
- 善政治理、兴业创新:来看看这几个智慧城市建设案例!
- 腾讯云运维干货沙龙-海量运维实践大曝光 (一)
- 【笔记】c++ - 正则表达式: GNU Regex Library、PCRE, PCRE++、Boost.Regex
- php编写六十甲子纳音表_六十甲子顺序表
- 【在线教程】pdf文件怎么压缩到最小
- Java语言程序设计与数据结构(基础篇)梁勇第九章 *9.3
- Swagger-ui.html页面简单的修改
- 电脑清灰,你的电脑能有多脏 论清灰的重要性
- vim .bashrc进入vim编辑界面之后如何退出
- T3出行快手首秀直播PK赛项目总曝光破亿
- Android使用SurfaceView播放视频,可以自适应尺寸。
- 德国MESSKO D1272AT数字显示器技术问题
热门文章
- 开发iPhone应用程序(一)
- python题库和答案_Python数据分析与数据可视化_题库免费答案2020
- 卡巴斯基反病毒软件KAV 7.0.0.125
- 安信Windows驱动开发教程:什么是通用 Windows 平台 (UWP) 应用程序?有什么功能?
- MapReduce之mapper以及reducer的个数决定性因素
- 大悲宇宙成为第一位送拍世界顶级拍卖行的中国NFT数字艺术家!
- 灰度发布引擎java_网关实现灰度发布
- 计算机毕业设计Java的影视资讯管理系统(源码+系统+mysql数据库+lw文档)
- PostgreSQL从菜鸟到专家 什么是数据库管理系统
- 定出公式对应的c语言表达式,代数式到c语言表达式和常用的c语言数学库函数_pow_sqrt_exp_fabs_abs...