博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速排序qsort
阅读量:1871 次
发布时间:2019-04-26

本文共 828 字,大约阅读时间需要 2 分钟。

快速排序

排序在各种场合经常被用到。

快速排序是十分常用的高效率的算法。
其思想是:先选一个“标尺”,
用它把整个队列过一遍筛子,
以保证:其左边的元素都不大于它,其右边的元素都不小于它。
这样,排序问题就被分割为两个子区间。
再分别对子区间进行上诉操作就可以了。(递归)

#include 
void swap(int a[], int i, int j) { int t = a[i]; a[i] = a[j]; a[j] = t;}int partition(int a[], int p, int r) { int i = p;//开始 int j = r + 1;//结束 int x = a[p]; while (1) { while (i < r && a[++i] < x); while (a[--j] > x); if (i >= j) break; swap(a, i, j); } swap(a, p, j); return j;}void quicksort(int a[], int p, int r) { if (p < r) { int q = partition(a, p, r); quicksort(a, p, q - 1); quicksort(a, q + 1, r); }}int main() { int i; int a[] = {
3, 5, 13, 6, 24, 2, 8, 19, 27, 6, 12, 1, 17}; int N = 13; quicksort(a, 0, N-1); for (i = 0; i < N; i++) printf("%d ", a[i]); printf("\n"); return 0;}

转载地址:http://bzeff.baihongyu.com/

你可能感兴趣的文章
网络攻击与防御--网络协议漏洞
查看>>
sql注入: 判断注入点类型
查看>>
千人千面Elasticsearch实战学习笔记
查看>>
最大子数组问题(递归)(java)
查看>>
2021年第十二届蓝桥杯软件赛省赛第二场 C/C++ 大学 A 组
查看>>
2020年哨兵数据批量下载(USGS)
查看>>
简单3步快速生成千万级别mysql测试数据库,模拟电商数据
查看>>
EasyDSS平台接入设备量过多的情况下如何进行批量推流测试?
查看>>
mysql数据库操作基础
查看>>
Mariadb基础管理
查看>>
kolla-ansible部署openstack+ceph高可用集群queens版本--- 部署说明
查看>>
kolla-ansible部署openstack+ceph高可用集群queens版本--- 环境准备及初始化
查看>>
kolla-ansible部署openstack+ceph高可用集群queens版本---docker私有镜像仓库配置
查看>>
mysql 中com.mysql.jdbc.PacketTooBigException 解决办法
查看>>
awk 的内置变量 NF、NR、FNR、FS、OFS、RS、ORS
查看>>
CentOS系统内核升级攻略
查看>>
linux系统时区修改(Debian的主机和docker)
查看>>
docker-compose 安装
查看>>
crontab 定时任务
查看>>
查看docker veth pair与宿主机上网卡的对应关系
查看>>