【剑指 offer】—— 快速排序
两个辅助函数:
// 生成区间内的随机整数
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】—— 快速排序相关推荐
- 递增的整数序列链表的插入_每日算法题 | 剑指offer 链表专题 (5)链表中倒数第k个节点...
点击上方"Jerry的算法和NLP",选择"星标"公众号 重磅干货,第一时间送达 题目 链表中倒数第k个节点 题目要求 输入一个链表的头结点,从尾到头反过来打印 ...
- 【Java】 剑指offer(40) 最小的k个数
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入n个整数,找出其中最小的k个数.例如输入4.5.1.6.2.7 ...
- 剑指offer(60-67题)详解
文章目录 60 把二叉树打印成多行 61 序列化二叉树 62 二叉搜索树第K个节点 63 数据流中的中位数 64 滑动窗口的最大值 65 矩阵中的路径 66 机器人的运动范围 67 剪绳子 欢迎关注个 ...
- 剑指offer和LeetCode题目笔记
目录 剑指offer 一.数组 1. 数组中重复的数字 2.二维数组中的查找 多个if和if,elseif语句的区别 3.旋转数组的最小数字 4.构建乘积数组 5.把数组排成最小的数 6.矩阵中的路径 ...
- 《剑指offer》题目说明
剑指offer推荐刷题地址: Leetcode: https://leetcode-cn.com/problemset/lcof (官方授权) 牛客网:https://www.nowcoder.com ...
- [字符串] --- 字符串的排列(剑指 Offer 38)
[试题描述] 输入一个字符串,打印出该字符串中字符的所有排列.你可以以任意顺序返回这个字符串数组,但里面不能有重复元素. 例如输入字符串abc,则打印出a,b,c所能排列出来的所有字符串abc,acb ...
- C#刷剑指Offer | 【常考题】最小的k个数
[C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第299篇学习分享 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...
- 对分查找的最多次数_「剑指offer题解」数组中出现次数超过一半的数字
关注我--个人公众号:后端技术漫谈 我目前是一名后端开发工程师.主要关注后端开发,数据安全,网络爬虫,物联网,边缘计算等方向. 原创博客主要内容 Java知识点复习全手册 Leetcode算法题解析 ...
- leetcode 打印_剑指 Offer 总结 - leetcode 剑指offer系列
剑指 Offer 系列完结撒花!! 本篇文章是对整个系列的精华总结, 对系列的每篇文章进行了分类, 并用一句话概括每道题的思路, 方便大家理解和记忆, 当然也包含原文完整链接供大家参考 总的来说, 写 ...
- 【LeetCode】剑指 Offer 40. 最小的k个数
[LeetCode]剑指 Offer 40. 最小的k个数 文章目录 [LeetCode]剑指 Offer 40. 最小的k个数 一.笨比解法 二.堆排序 三.快速选择 总结 一.笨比解法 选择排序变 ...
最新文章
- python在代码里查看获取模块信息
- hibernate对象关系实现(二)一对一
- Sqlserver 如何获取每组中的第一条记录
- TF之AutoML之AdaNet框架:AdaNet框架的简介、特点、使用方法详细攻略
- java 俄语 工作_工作俄语怎么说
- Console的使用——Google Chrome代码调试
- spring-session + redis 实现集群 session 共享
- Python开发一个股票类库
- Python学习1 基础语法 数据类型 计算机基础
- Java描述设计模式(15):责任链模式
- 结合图拉普拉斯的半监督学习
- 4、Firefox 中安装Fiddler插件
- 构建jQuery对象(转)
- 多功能pdf编辑器PDF Office Max for mac
- UBUNTU18.04系统安装打印机
- 如何根据关键字批量获取淘宝联盟中的商品图片
- 连点脚本java,按键精灵如何设置自动连续点击 自动连点脚本设置教程
- java 事务级别_java事务隔离级别
- ps渐变怎么用和渐变工具技巧
- mongodb敏感数据加解密