简单的C语言代码实现快速排序
快速排序的基本原理是采用递归,我们主要关注第一次排序。排序中,我们需要给出待排的一组数的最左边和最右边的两个数:left、right用于指定排序的范围,通常left=0;right=len-1。此外还需要给出一个基数,这个数的选取比较随意,通常选为第一个数即可。选出这个基数(point)后,我们进行比较,将小于基数的数移到左边,大于的数移到右边,完成第一次排序。此后在左半部分和右半部分进行递归即可完成全部的排序。
#include<stdio.h>
void qusort(int a[],int l,int r)
{int i=l;//i为从左到右的‘key’值int j=r;//r为从右到左的'key'值int point=a[i];//将基准值设为a[0]if(l>r){return;}//防止输入错误while(i<j){while(i<j&&a[j]>point)j--;//如果右边大于基准值,右边左移if(i<j){s[i]=s[j];i++;}如果右边小于基准值,右边填坑基准值的位置,并右移一位while(i<j&&a[i]<point)i++;//如果左边小于基准值,左边右移if(i<j){s[j]=s[i];j--;}如果左边小于基准值,左边填坑到右边,并左移一位}s[i]=point;//填坑qusort(a,l,i-1);//左边递归qusort(a,j+1,r);//右边递归
}
int main()
{int a[]={48,6,57,42,60,72,83,73,88,85 };int len=sizeof(a)/sizeof(int);//使用len维护数组大小qusort(a,0,len-1);for(int i=0;i<len;i++){printf("%d",a[i]);}
}
结果如下:
简单的C语言代码实现快速排序相关推荐
- 线性结构 -- 连续存储(数组), 1个简单的c语言代码实现.
数据结构大体成上可以分成两种: 1. 线性结构. 2. 非线性结构( 树,图) 1. 什么是线性结构 大概上可以这样定义: 加入所有的节点可以用一条直线连接起来. 就是线性结构... 2 ...
- 数据结构 --静态队列的一个简单的C语言代码实现
静态队列的大概原理和部分算法讲解已经在上一篇博文中讲过了.. http://blog.csdn.net/nvd11/article/details/8816699 这里接上篇文章, 用c语言来实现1个 ...
- 一个简单的C语言代码段,逻辑题
最近在练习写C代码,发觉自己真的很喜欢写代码,就分享下自己写的代码,我的代码也是在原有作者的基础上改成自己的代码. 程序猿有一种分享欲,自己一个人闷着,戴着耳机写代码,就想分享出来,希望有人可以看见可 ...
- 一些简单的C语言代码
1.从键盘获取一个年份,判断其是否为闰年 闰年判断方法:能被4整除且不能被100整除,或者能被400整除 #define _CRT_SECURE_NO_WARNINGS #include <st ...
- 登录Linux操作系统并执行第一个C语言代码
为什么要选择Linux 在服务器领域,IBM.HP.Novell.Oracle 等厂商对Linux 系统提供了全方位的支持.2004年,IBM宣布其全线 服务器均支持Linux,思科公司在网络防火墙和 ...
- header-icon stm32实现圆弧插补,c语言代码实现
圆弧插补是指将圆弧转换为若干个线段或点,并在 STM32 上实现它.下面是一个简单的实现方法: 计算圆弧上的点:使用极坐标系中的极角和极径来确定圆弧上的点. 将极坐标转换为直角坐标:使用极坐标公式将极 ...
- 数据结构 - 队列简介 及 1个简单的c语言链式队列代码实现
1. 队列的定义 所谓队列(queue)就是一种能实现"先进先出"的一种线性存储结构. 跟栈有点类似, 例如栈只有1个出入口, 任何元素进入或者离开栈都必须经过同1个出入口(栈顶 ...
- 快速排序c语言实现,快速排序的C语言代码实现
快速排序实质上是对"冒泡排序"的一种改进,整个排序过程可概括为:通过N趟的排序将原本的排序数据分为若干块进行分块排序,而在每趟排序过程中,以指定的关键字将待排数据分别分为比关键字大 ...
- 从入门到入土:基于C语言采用UDP协议实现远程控制|详细说明|利用流套接字实现一个简单的远程控制系统|代码展示
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- 完整简单c语言程序代码,一些简单的C语言程序代码.docx
一些简单的C语言程序代码 由键盘任意输入1个4位数整数,分别输出其中的个位.十位.百位.千位./* expe 3-10 */#include #include void main(void){ int ...
最新文章
- Python3 函数function
- 在一家公司呆了 10 年的程序员,最后都怎么了?
- 专题 13 IPC之信号量
- 在几何画板中如何制作圆柱的侧面展开动画_倒计时与时钟演示 | 几何画板
- 最常见的显示设置和快捷键
- consul之:ACL配置使用
- mysql数据库服务器设置访问权限
- java中自定义输入数字格式_Java 创建并使用自定义数字格式、35;###、####.#####和语言环境...
- Spring IOC学习心得之源码级分析ContextLoaderListener的作用(IOC容器初始化入口)
- a(n+1) = f[a(n)] 型递推数列的迭代作图(玩计算器玩出了问题)
- 7832:最接近的分数
- iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )...
- shp文件中polyline是什么_SHP文件坐标转换工具1.0版
- 雷达imu联合标定lidar_imu_calib-main
- linux还原防火墙设置,Linux防火墙设置教程
- Windows 10搭建FTP服务器
- [SPOJ IGAME Interesting Game]Nim 博弈+数位DP
- 机器学习平台基础知识
- ListView 上下移动行
- 笔记本电脑触控板突然失灵的解决办法