![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构&算法
qcg_qcg
将记录转变为思考
展开
-
自定义数组
public class MyArray { private int[] array; private int size; public MyArray(int capacity) { this.array = new int[capacity]; size = 0; } /** * 插入元素 * ...原创 2019-05-06 19:25:36 · 479 阅读 · 0 评论 -
寻找全排列的下一个数
题目 给出一个正整数,找出这个正整数所有数字全排列的写一个数。 如果输入12345,返回12354 如果输入12354,返回12453 如果输入12435, 返回12453 代码实现 /** * @Author qucg * @Version 2019/6/25 * @Description 寻找全排列的下一个数 * 步骤: * 1.找数字置换的边界 * 2.让逆序区域的前一位和逆序区...原创 2019-06-25 22:17:49 · 356 阅读 · 0 评论 -
使用栈实现队列
思路 通过两个栈A B,A做入队操作,B做出队操作 元素转移时机:如果出队时B是空的则将A元素转移至B 代码实现 /** * @Author qucg * @Version 2019/6/19 * @Description 使用栈实现队列 * 思路: * 1.通过两个栈A/B,A做入队操作,B做出队操作。 * 2.元素转移时机:如果出队时B是空的则将A元素转移至B */ publ...原创 2019-06-19 21:49:41 · 143 阅读 · 0 评论 -
桶排序
桶排序就是将数据分在不同的区间中,然后每个区间排序,最后在合并成一个完整的有序数列,代码实现如下: import java.util.LinkedList; /** * @Author qucg * @Version 2019/5/27 * @Description 桶排序 * 区间跨度:(最大值-最小值)/(桶数量-1) * 桶的个数等于元素的个数 */ public class ...原创 2019-05-27 22:13:04 · 146 阅读 · 0 评论 -
基于数组实现的队列
/** * @author qcg * @version 2019/5/13. * @description 基于数组实现的队列 * 队列的类型:顺序队列、链式队列、循环队列、阻塞队列、并发队列 */ public class MyArrayQueue { private String[] items; // 队列大小 private int size = 0; ...原创 2019-05-13 17:08:29 · 655 阅读 · 0 评论 -
自定义栈(数组实现)
概念 栈是一种操作“受限”的线性表,具有先进后出的特性 应用场景 word撤销 网页后退 语义校验(括号是否匹配等) 代码实现 /** * @author qcg * @version 2019/5/13. * @description 基于数组实现的栈 */ public class MyArrayStack { private String[] items; // ...原创 2019-05-13 11:17:22 · 378 阅读 · 0 评论 -
基于堆实现的优先级队列
/** * @author qcg * @version 2019/5/16. * @description 优先队列,二叉堆是实现优先队列的基础。该例中二叉堆属于大堆 * 应用场景: * 1.topK问题 * 2.不需要FIFO按照权重操作出队的情况 * 3.RabbitMQ中,当消费者不足,不能及时进行消费的情况下,优先级队列会生效 * 4.hadoop中Map结束之后会将IF...原创 2019-05-16 16:53:37 · 396 阅读 · 0 评论 -
自定义二叉树
import java.util.Arrays; import java.util.LinkedList; /** * @author qcg * @version 2019/5/10. * @description 自定义二叉树及其前中后遍历 */ public class MyTreeNode { /** * 构建二叉树 * * @param i...原创 2019-05-11 09:27:27 · 341 阅读 · 0 评论 -
自定义链表
/** * @author qcg * @version 2019/5/6. * @description 自定义链表 * 头尾部的两步操作:1.插入节点(next指向node) 2.变更节点(last指针后移) * node.next=insertNode 这是插入元素的操作 */ public class MyLinkedList { // 头节点指针 priva...原创 2019-05-07 16:52:41 · 375 阅读 · 0 评论 -
二叉堆
二叉堆是堆排序和优先队列的基础 以下为二叉堆的代码: /** * @author qcg * @version 2019/5/14. * @description 二叉堆示例 * 假设父节点的下标是parent,那么他的左孩子下标就是2*parent+1;右孩子小标就是2*parent+2; */ public class MyBinaryHeap { /** * "...原创 2019-05-14 20:21:43 · 127 阅读 · 0 评论 -
快速排序实现
快速排序为什么快? 快速排序的“快”是因为使用了“分治法”,使其时间复杂度降低到了(nlogn) 实现的方法 递归 (双边循环法 / 单边循环法) 非递归 代码实现 /** * @Author qucg * @Version 2019/5/19 * @Description 快速排序,快速排序的“快”是因为使用了“分治法” */ public class Q...原创 2019-05-19 10:53:38 · 455 阅读 · 0 评论 -
如何实现大整数相加
需求:如何实现大整数相加,假设两个数long类型存不下。 思路:将两个数分别存在数组中,然后按照位相加 代码如下 /** * @Author qucg * @Version 2019/7/3 * @Description 大数相加 * 思路: * 1.将两个大数A和B,按照位分别存在arrayA和arrayB中(从个位开始存) * 2.将arrayA和arrayB中的对应位数相加,注意...原创 2019-07-03 22:26:06 · 212 阅读 · 0 评论