#include <cstdio>
#include <iostream>using namespace std;
// 双游标版本
int* partition(int *l, int *r)
{int *i = l+1, *j = r-1;int aim = *l, temp;while(i<=j) {while(i<=j && *i<=aim)    i++;while(i<=j && *j>aim)    j--;if(i<=j) {temp = *i;*i = *j;*j = temp;i++;j--;}}temp = *l;*l = *j;*j = temp;
}
// 单游标版本 1
// 维护这样一个区间 [ <=aim | >aim | unknown], k指向第一个>aim的位置
int* partition2(int *l, int *r)
{int *k = l+1;int aim = *l, temp;for(int *p=l+1; p < r; p++) {if(*p <= aim) {temp = *p;*p = *k;*k = temp;k++;}}temp = *(k-1);*(k-1) = *l;*l = temp;//    for(int *p=l; p < r; p++) {
//        printf("%d ", *p);
//    }
//    printf("\n");return k-1;
}// 单游标版本 2
// 维护这样一个区间 [ <=aim | >aim | unknown], k指向最后一个<=aim的位置
int* partition3(int *l, int *r)
{int *k = l;int aim = *l, temp;for(int *p=l+1; p < r; p++) {if(*p <= aim) {temp = *p;*p = *(k+1);*(k+1) = temp;k++;}}temp = *k;*k = *l;*l = temp;//    for(int *p=l; p<r; p++) {
//        printf("%d ", *p);
//    }
//    printf("\n");return k;
}void quick_sort(int *l, int *r)
{if(r-l<2)    return; // 只有当序列长度>=2时,才需要排序
//    int *mid = partition(l, r);int *mid = partition3(l, r);quick_sort(l, mid);quick_sort(mid+1, r);
}int main ()
{int a[] = {6,2,1,8,7,5,3,4};
//    int a[] = {2,4,3,1};int n = sizeof(a) / sizeof(int);quick_sort(a, a+n);for(int i=0; i<n; i++)    printf("%d ", a[i]);return 0;
} 

转载于:https://www.cnblogs.com/AcIsFun/p/5306890.html

快速排序 ——双游标、单游标实现相关推荐

  1. Debian 下通过Bonding 实现双网卡单IP

    Debian 下通过Bonding 实现双网卡单IP冗余 Linux 双网卡绑定一个IP地址,实现网卡冗余,将两个网卡虚拟为一块.使用同一个IP地址.本文介绍了 bonding 的原理,及如何在 De ...

  2. 全球及中国双特异性单抗行业发展可行性及项目调研评估报告2022-2027年

    全球及中国双特异性单抗行业发展可行性及项目调研评估报告2022-2027年 [搜索鸿晟信合查看官网更多内容!]  双特异性单克隆抗体用于改善各种医疗条件下的免疫反应,并在药物递送和癌症免疫治疗领域得到 ...

  3. CentOS下双网卡单网关路由配置

    CentOS下双网卡单网关路由配置 大 | 中 | 小 [ 所属分类 系统(linux) | 发布者 店小二03 | 时间 20131001 |作者 路人甲 ]0人收藏点击收藏 CentOS下双网卡单 ...

  4. linux 单网卡 路由,CentOS下双网卡单网关路由配置

    CentOS下双网卡单网关路由配置 假定主机的网卡1的IP地址为:219.223.244.233/21,网卡2的IP地址为:219.223.242.216/21单网为:219.223.240.1(这里 ...

  5. MS SQL Server2005存储过程、游标、游标嵌套综合例子

    MS SQL Server2005存储过程.游标.游标嵌套综合例子: 放在这里备忘>>> Java代码 create proc decisionPathRefSchemes as b ...

  6. 什么是mysql的游标_MySQL游标概念是什么 MySQL游标概念与用法介绍

    本篇文章小编给大家分享一下MySQL游标概念与用法介绍,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 1.游标的概念(Cursor) 一条sql,对应N条资源,取出资源的接 ...

  7. oracle创建多个游标,Oracle——游标的创建和使用

    游标 SQL语言是面向集合的,是对指定列的操作.如果要对列中的指定行进行操作,就必须使用游标. 当在PL/SQL块中执行查询语句(SELECT) 和数据操纵语句(DML) 时,Oracle会为其分配一 ...

  8. mysql 游标 navigate_MySQL游标的概念介绍和游标的使用讲解

    一.MySQL游标的概念 1.游标介绍 MySQL的游标(cursor)是一个重要的概念,通过查找资料与自己的理解,主要得出以下几点关于自己的理解. 有数据缓冲的思想:游标的设计是一种数据缓冲区的思想 ...

  9. oracle 如何创建游标,Oracle--plsql游标创建和使用

    Oracle--plsql游标创建和使用 为什么要游标: 先看这个: DECLARE v_empno emp.empno%type; v_ename emp.ename%type; BEGIN SEL ...

最新文章

  1. 关于python文件读写小结
  2. POJ 2752 同一个串的前后串
  3. 不同坐标系下角速度_坐标系统及常见坐标系
  4. QML中类似QMap的用法
  5. 论文解读 | 基于递归联合注意力的句子匹配模型
  6. C++实现图的深度优先遍历和广度优先遍历
  7. java学习之路--面试之多线程基础
  8. 浅谈 Orbeon form builder 的权限控制
  9. SAP UI5不支持delta render
  10. PAT-A Sign In and Sign Out
  11. python计算机视觉2:图像边缘检测
  12. pdn阻抗测试_信号线的特征阻抗和PDN的阻抗区别
  13. itools苹果录屏大师_录屏可以有声音,发照片可以免流量,计算器输错可回删
  14. 服务器显示配额不足什么原因,win7系统显示配额不足导致无法访问的解决方法...
  15. ACCV 结果出来了,大家来晒一晒吧~
  16. 随机手机号码_微信绑定了手机号码怎么解绑
  17. keil 5 报错记录:..\OBJ\templiate.axf: Error: L6218E: Undefined symbol PcdHalt (referred from rc522.o).
  18. 反爬虫之猫眼电影字体加密
  19. 5.1 数据去重 完全去重
  20. RVIZ界面没有显示joint publishe的GUI界面解决方法

热门文章

  1. sysbench mysql测试_使用sysbench对MySQL进行测试
  2. 网站建设你够专业吗?——不需说,从色彩搭配就能看出来
  3. docker lamp php7,如何用docker安装lamp
  4. python入门之控制结构-循环结构_(一)Python入门-4控制语句:05while循环结构-死循环处理...
  5. SSH-Auditor:一款SSH弱密码探测工具
  6. dnscat使用——整体感觉这个工具不完善,失败率很高,传文件时候没有完整性校验,我自己测试时通过域名转发失败,可能是其特征过于明显导致...
  7. FATE 集群部署 step1
  8. Linux下配置Node.js环境
  9. 设计模式-结构性模式
  10. 动态数组 allocator