快速排序实质上是对“冒泡排序”的一种改进,整个排序过程可概括为:通过N趟的排序将原本的排序数据分为若干块进行分块排序,而在每趟排序过程中,以指定的关键字将待排数据分别分为比关键字大的部分和比关键字小的部分,反复上述过程,将整个待排数列分散为若干个小数列而分别进行排序操作。假设我们现对一列数进行快速排序,其C语言代码实现如下:

#include

int partition(int *data,int low,int high)

{       int t = 0;

t = data[low];

while(low < high)

{       while(low < high && data[high] >= t)

high--;

data[low] = data[high];

while(low < high && data[low] <= t)

low++;

data[high] = data[low];

}

data[low] = t;

return low;

}

void sort(int *data,int low,int high)        //快排每趟进行时的枢轴要重新确定,由此进 //一步确定每个待排小记录的low及high的值

{       if(low >= high)

return ;

int pivotloc = 0;

pivotloc = partition(data,low,high);

sort(data,low,pivotloc-1);

sort(data,pivotloc+1,high);

}

void quick_sort(int *data,int n)         //该函数进行sort过程的调用

{         sort(data,0,n-1); }

int main()

{       int i;

int data[]={49,38,32,98,65,74,12,8};

quick_sort(data,sizeof(data)/sizeof(int));

for( i = 0 ; i < sizeof(data)/sizeof(int); i++)

printf("%d ",data[i]);

printf("\n");

return 0;

}

快速排序c语言实现,快速排序的C语言代码实现相关推荐

  1. c语言快速排序案例,什么是快速排序?C语言数组快速排序例子

    快速排序(Quick Sort)是一种有效的排序算法.虽然算法在最坏的情况下运行时间为O(n^2),但由于平均运行时间为O(nlogn),并且在内存使用.程序实现复杂性上表现优秀,尤其是对快速排序算法 ...

  2. 用数据结构c语言写成绩排序,C语言数据结构 快速排序实例详解

    C语言数据结构 快速排序实例详解 一.快速排序简介 快速排序采用分治的思想,第一趟先将一串数字分为两部分,第一部分的数值都比第二部分要小,然后按照这种方法,依次对两边的数据进行排序. 二.代码实现 # ...

  3. Go语言编程:Go语言实现快速排序算法

    前言 今天用Go语言实现下经典排序算法--快速排序算法.主要是学习了Go语言,得用它来干点事情嘛,就用快速排序来练手.在Go语言语法方面,主要用到 切片数组,for循环(Go语言没有while循环), ...

  4. C语言-排序-快速排序-qsort<stdlib.h>

    想到排序,大多数人第一个想到的都是冒泡排序,今天介绍一种函数,叫快速排序qsort函数,在讲这个函数之前,先将冒泡排序(数字)的代码给大家,如果想排序字符串,请大家使用strcmp函数即可 这是C语言 ...

  5. 用C语言实现快速排序算法

    一.快速排序算法(Quicksort) 1. 定义 快速排序由C. A. R. Hoare在1962年提出.快速排序是对冒泡排序的一种改进,采用了一种分治的策略. 2. 基本思想 通过一趟排序将要排序 ...

  6. c语言实现快速排序函数

    c语言实现快速排序 众所周知,快速排序在排序算法中时间复杂度较为低,为O(nlogn),而选择,冒泡等排序的时间复杂度均为O(n^2). 所以,现在我们来用c语言实现快速排序算法. 代码如下: #in ...

  7. c语言双向链表 快速排序,双向链表的快速排序(swift版本)

    面试经常会被问到的单向链表的快速排序or双向链表的快速排序,现在用swift写了一个双向链表的快速排序,直接上代码 获取源码 //初始化 var linkList = LinkList() linkL ...

  8. 【c语言】快速排序的三种实现以及优化细节

    目录 前言 一.hoare版本 1.思想 2.代码 二.挖坑版本 1.思想 2.代码 三.前后指针版本 1.思想 2.代码 四.分治思想: 五.两种优化 1.三数取中 2.小区间优化 六.非递归实现快 ...

  9. C语言实现--快速排序

    一.快速排序介绍 快速排序(Quick Sort)使用分治法策略. 它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分成独立的两部分:其中一部分的所有数据都比另外一部分的所有数据都要小.然后 ...

  10. php快速排序法远离,php快速排序原理与实现方法分析

    本文实例讲述了php快速排序方法.分享给大家供大家参考,具体如下: $n = array('13','14','55','10','54','2','79','106','89','90','22', ...

最新文章

  1. pix4d计算机配置速度,ContextCapture、Pix4D电脑需求配置
  2. centos7 安装无线工具包wireless-tools 包含 iwlist,iwconfig命令
  3. 1.9 matlab字符与字符串
  4. 记一次在LAMP中遇到的问题
  5. echarts的x轴数量固定_联轴器 多节膜片式夹紧螺丝固定型 DAAPC(对应LK5CWP)
  6. openmv串口数据 串口助手_STM32 串口接收不定长数据 STM32 USART空闲检测中断
  7. pyaudio usb playback_5.5寸触控屏IP电话会议USB全向麦克风NK-OAM600U_影视工业网
  8. ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)
  9. C#单例模式的简单使用
  10. sigprocmask()函数实例详解,设置信号规定时间堵塞,取消信号堵塞
  11. threadpoolexecutor参数_ThreadPoolExecutor的使用
  12. 多线程python实现方式_python多线程的两种实现方式(代码教程)
  13. java 封装(Encapsulation)
  14. 前后分离架构下跨域调试
  15. 2021鞍山市高考成绩怎么查询,鞍山师范学院
  16. java: Iterator的使用
  17. 微软官网win10系统下载地址
  18. 信息安全快讯丨密标委发布信息系统密码应用基本要求;国家漏洞库关于微软多个安全漏洞的通报;支付宝检测到部分苹果用户ID被盗
  19. 【阿里云云计算工程师ACP认证】什么是ACP
  20. 简单解释一下一个项目中的pojo模块

热门文章

  1. 安卓按钮设置背景颜色不管用_MIUI10新功能:时钟背景黑白自选、公交卡自定义时段唤起...
  2. 傅里叶变换matlab案例,基于matlab的傅里叶变换
  3. php无限极,php实现无限极分类 - MyClassPHP-Colin主页 - OSCHINA - 中文开源技术交流社区...
  4. electron 菜单栏_如何在Electron JS中添加任务栏图标菜单?
  5. 双“11”搞促销?用贪心算法来盘他!
  6. 面试官 | JVM 为什么使用元空间替换了永久代?
  7. 关联数组(associative array)
  8. CentOS7 安装ownCloud
  9. 关于list遍历时sychronizedList方法和synchronized同步块的线程安全问题思考
  10. linux 查看neihe版本_linux查看系统内核版本号