两个辅助函数:

// 生成区间内的随机整数
int RandInRange(int s, int e, unsigned seed=time_t(0))
{ srand(seed);return rand()%(e-s)+s;
}void Swap(int& a, int& b)
{int tmp = a; a = b; b = tmp;
}

分区函数:

int partition(int seq[], int len, int start, int end)
{if (seq == NULL || len <= 0 || start < 0 || end >= len)throw new exception("Invalid parameters");int pivot = RandInRange(start, end);Swap(seq[pivot], seq[end]);int small = start - 1;for (int i = start; i < end; ++i){if (seq[i] < seq[end])  {++small;if (small != i)Swap(seq[small], seq[i]);}}++small;Swap(seq[end], seq[small]);return small;
}

主调函数,由递归结构定义:

void qsort(int seq[], int len, int start, int end)
{if (start == end)return;int idx = partition(seq, len, start, end);if (idx > start)qsort(seq, len, start, idx-1);if (idx < end)qsort(seq, len, idx+1, end);
}

【剑指 offer】—— 快速排序相关推荐

  1. 递增的整数序列链表的插入_每日算法题 | 剑指offer 链表专题 (5)链表中倒数第k个节点...

    点击上方"Jerry的算法和NLP",选择"星标"公众号 重磅干货,第一时间送达 题目 链表中倒数第k个节点 题目要求 输入一个链表的头结点,从尾到头反过来打印 ...

  2. 【Java】 剑指offer(40) 最小的k个数

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入n个整数,找出其中最小的k个数.例如输入4.5.1.6.2.7 ...

  3. 剑指offer(60-67题)详解

    文章目录 60 把二叉树打印成多行 61 序列化二叉树 62 二叉搜索树第K个节点 63 数据流中的中位数 64 滑动窗口的最大值 65 矩阵中的路径 66 机器人的运动范围 67 剪绳子 欢迎关注个 ...

  4. 剑指offer和LeetCode题目笔记

    目录 剑指offer 一.数组 1. 数组中重复的数字 2.二维数组中的查找 多个if和if,elseif语句的区别 3.旋转数组的最小数字 4.构建乘积数组 5.把数组排成最小的数 6.矩阵中的路径 ...

  5. 《剑指offer》题目说明

    剑指offer推荐刷题地址: Leetcode: https://leetcode-cn.com/problemset/lcof (官方授权) 牛客网:https://www.nowcoder.com ...

  6. [字符串] --- 字符串的排列(剑指 Offer 38)

    [试题描述] 输入一个字符串,打印出该字符串中字符的所有排列.你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 例如输入字符串abc,则打印出a,b,c所能排列出来的所有字符串abc,acb ...

  7. C#刷剑指Offer | 【常考题】最小的k个数

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第299篇学习分享 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

  8. 对分查找的最多次数_「剑指offer题解」数组中出现次数超过一半的数字

    关注我--个人公众号:后端技术漫谈 我目前是一名后端开发工程师.主要关注后端开发,数据安全,网络爬虫,物联网,边缘计算等方向. 原创博客主要内容 Java知识点复习全手册 Leetcode算法题解析 ...

  9. leetcode 打印_剑指 Offer 总结 - leetcode 剑指offer系列

    剑指 Offer 系列完结撒花!! 本篇文章是对整个系列的精华总结, 对系列的每篇文章进行了分类, 并用一句话概括每道题的思路, 方便大家理解和记忆, 当然也包含原文完整链接供大家参考 总的来说, 写 ...

  10. 【LeetCode】剑指 Offer 40. 最小的k个数

    [LeetCode]剑指 Offer 40. 最小的k个数 文章目录 [LeetCode]剑指 Offer 40. 最小的k个数 一.笨比解法 二.堆排序 三.快速选择 总结 一.笨比解法 选择排序变 ...

最新文章

  1. python在代码里查看获取模块信息
  2. hibernate对象关系实现(二)一对一
  3. Sqlserver 如何获取每组中的第一条记录
  4. TF之AutoML之AdaNet框架:AdaNet框架的简介、特点、使用方法详细攻略
  5. java 俄语 工作_工作俄语怎么说
  6. Console的使用——Google Chrome代码调试
  7. spring-session + redis 实现集群 session 共享
  8. Python开发一个股票类库
  9. Python学习1 基础语法 数据类型 计算机基础
  10. Java描述设计模式(15):责任链模式
  11. 结合图拉普拉斯的半监督学习
  12. 4、Firefox 中安装Fiddler插件
  13. 构建jQuery对象(转)
  14. 多功能pdf编辑器PDF Office Max for mac
  15. UBUNTU18.04系统安装打印机
  16. 如何根据关键字批量获取淘宝联盟中的商品图片
  17. 连点脚本java,按键精灵如何设置自动连续点击 自动连点脚本设置教程
  18. java 事务级别_java事务隔离级别
  19. ps渐变怎么用和渐变工具技巧
  20. mongodb敏感数据加解密

热门文章

  1. Spark Streaming保存到HDFS目录中案例
  2. r语言t检验输出检验统计量_如何进行统计分析
  3. excel表格导入功能
  4. RDD和DataFrame和DataSet三者间的区别
  5. php wml,WML处理---H_wml.php
  6. python图片矢量化_图像处理tas的Python矢量化
  7. java求最大子数组 (分治算法)
  8. CUDA ---- Hello World From GPU
  9. Qt QT的I/O流 QT输入输出
  10. win10安装pycocotools遇到的问题