这个快速排序算法可能不是效率最高的,但它是最简单的算法之一。
快速排序算法是由C.A.R.Hoare于1962年发明的。对于一个给定的数组,从中选择一个元素,以该元素为界将其与元素划分为两个子集,一个子集中的元素都小于该元素,另一个子集中的元素都大于等于该元素。对这两个子集递归执行这一过程,当某个子集中的元素小于2时,这个子集就不需要再次排序,终止递归。
该算法的C语言实现代码如下:

void qsortlist(int v[],int left,int right){int i,last;void swap(int v[],int i,int j);if(left>=right)return;swap(v,left,(left+right)/2);//选定中间元素作为划分两个子集的元素,并将其与替换至数组第一个位置last=left;//利用last记录两个子集的中间元素的位置,last初始化为数组第一个元素的位置for(i=left+1;i<=right;i++)//遍历数组每个元素与第一个元素比较if(v[i] <v[left]){//如果该数组元素小于第一个元素,则将其与last后的元素交换,这样可以保证last之前的元素都小于第一个元素swap(v,++last,i);//swap(v,left,last);//将关键元素交换至两个子集的中间,并对两个子集进行递归调用排序qsortlist(v,left,last-1);qsortlist(v,last+1,right);
}void swap(int v[],int i,int j){//交换数组元素值函数int temp;temp=v[i];v[i]=v[j];v[j]=temp;
}

最简单的快速排序算法的C语言实现相关推荐

  1. 快速排序算法的C语言实现

    快速排序算法的C语言实现1 快速排序主要基于"二分"的思想,每次找出一个基准数从而将数列以基准数为界限分为两部分,接着再对左右两边的数列再次排序(即再次调用该排序函数).以上为本人 ...

  2. 快速排序算法(c语言读取文件数据)

    本节介绍一种排序算法--快速排序算法(Quick Sort). C语言中自带函数库中就有快速排序--qsort函数 ,包含在 <stdlib.h> 头文件中. 快速排序算法是在起泡排序的基 ...

  3. python选择排序算法图解_简单选择排序算法(C语言详解版)

    该算法的实现思想为:对于具有 n 个记录的无序表遍历 n-1 次,第 i 次从无序表中第 i 个记录开始,找出后序关键字中最小的记录,然后放置在第 i 的位置上. 例如对无序表{56,12,80,91 ...

  4. 数据结构之快速排序算法(C语言版)

    快速排序是学习数据结构必须掌握的一种排序方法,效率很高,经过老师的讲解很想和大家分享~ 下面举一个例子来说明. 例如数组:19 6 3 78 34 10 一.找出枢轴并把数组划分成块,枢轴前面的都比枢 ...

  5. c语言快速排序算法代码,c语言快速排序算法示例代码分享

    #include #include #include #define RANDOM(i) (rand()%i) #define N 9    //设置数组长度 //分区操作 int Partition ...

  6. 快速排序算法quickSort

    最简单的快速排序算法 #include <iostream> #include <vector> #include <algorithm> using namesp ...

  7. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

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

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

  9. c语言栈的实现以及操作_python模拟栈的操作实现非递归方式的快速排序算法

    本文首发地址: https://yishuihancheng.blog.csdn.net/article/details/76185032 欢迎关注我的博客[Together_CZ],我是沂水寒城! ...

最新文章

  1. Python这么慢,为啥大公司还在用?
  2. 端口基础常识大全+常用端口对照
  3. 习题3-3 数数字(Digit Counting , ACM/ICPC Danang 2007, UVa1225)
  4. mysql semi join_MySQL 通过semi join 优化子查询
  5. setTimeOut函数和setInterval函数
  6. 自定义获取html元素对象的7种方法。
  7. python网络爬虫的论文模板_Python简单网络爬虫实战—下载论文名称,作者信息(上)...
  8. clickhouse 子查询_TPCDS用于Clickhouse和Doris性能测试
  9. 11. javacript高级程序设计-DOM扩展
  10. 自家院子里能不能种桃树呢?
  11. Netty HashedWheelTimer 定时任务调用
  12. barplot函数--R语言
  13. 【ubuntu如何录制gif图】
  14. 圆通物流轨迹查询(非第三方)
  15. pdf文件怎么拆分页面为多个pdf
  16. spire.pdf使用
  17. wordpress主题安装,wp主题模板安装技巧
  18. 关于ie中使用a标签无法打开(预览)pdf问题
  19. C++学习笔记5——引用
  20. 四旋翼飞行器13——欧拉中的俯仰、横滚、偏航角

热门文章

  1. 多线程 - Windows下线程池的使用
  2. linux 提取cpio_Linux cpio命令
  3. 全网URL采集工具(msray),支持关键词采集,域名采集,联系人采集
  4. 渗透测试通过SHODAN收集信息
  5. 新年找工作的注意啦:一般通用面试内容 收藏
  6. 2009款丰田雅力士车发电量不足
  7. 《计算机软件测试规范》学习记录
  8. 关于Virt-P2V那点事
  9. fastreport使用第一例
  10. 《世界·领主》开发日志[01]