
算法
凡人·没有梦
愿每天早上都有起床的勇气
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
归并排序两种实现
1. 两个有序数组(arr1,arr2),在O(Math.max(arr1.length, arr2.length))时间复杂度范围可将arr1,与arr2归并为整体有序数组;空间复杂度为O(arr1.length + arr2.length);2. 将原数组先分割为N个最小归并单元 即arr1, arr2中各一个元素,此时arr1, arr2 是有序数组,满足第1条,可进行归并;归并结果为arr3为有序数组,且arr3.length = arr1.length + arr2.length;原创 2022-01-23 14:48:06 · 681 阅读 · 0 评论 -
字符串查找BM算法
假设主字符串与模式(匹配)字符串的字符编码范围是0~255;BM算法整体分为坏字符串匹配,与好前缀匹配,整体比较烧脑,算法过程介绍比较麻烦### 构建坏字符串hash表```javastatic final int SIZE = 256;// 构建字符与下表 hash表,若有重复,后面位置覆盖前面private void generateBC(char[] b, int m, int[] bc) { for (int i = 0; i < SIZE; i++)原创 2022-01-16 15:48:49 · 325 阅读 · 0 评论 -
有序数组查找
旋转数组二分法查找、两个有序数组查找中位数、两个有序数组查找第N大数字原创 2022-01-03 15:40:33 · 611 阅读 · 0 评论 -
heap, 堆与堆排序
数据结构堆堆是一种特殊的树,满足以下特性的树(????)可称为堆(Heap)1. 完全二叉树(假设N层树,第N层节点全靠左排列,1~(N-1)层是满二叉树),通常采用数组来存储2. 所有父节点小于等于(或大于等于)左右子节点采用数组存储,更节省空间,可通过数组下标计算出对应节点的父子节点下标值若从数组下标1开始存储数据当前节点下标=i,则父节点下标 = i/2,左子节点下标 = i*2,右子节点下标 = i*2+1;若从数组下标0开始存储数据当前节点下标=i,则父节点下标原创 2021-12-19 20:57:02 · 682 阅读 · 0 评论 -
二叉查找树-java
1. 非递归遍历二叉查找树2. 记录二叉树各种常用操作原创 2020-12-27 17:10:28 · 292 阅读 · 1 评论 -
快速排序三种实现
学习算法最快方式:直接看标准代码。 note :我们不为提高智商,我们仅仅想快速 「体验|接受」 算法的感觉看完代码后,拿出值和笔推画出代码的过程 | 或debug;如果有哪一行代码没有理解,很可能是(你的初始数据或case)没有推画或debug出对应的边界条件快速排序经典算法: public static void quick_sort(int[] arr, int l, int r) { if (l < r) { int mid...原创 2020-10-13 23:52:16 · 373 阅读 · 0 评论