算法
文章平均质量分 76
每天学习算法的心得
Baage-cn
一个人能走的多远不在于他在顺境时能走的多快,而在于他在逆境时多久能找到曾经的自己。
————KMP
展开
-
常见算法 - 动态规划算法
动态规划(Dynamic programming)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。原创 2022-08-21 09:49:15 · 196 阅读 · 1 评论 -
常用算法 - 分治
在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。例如,对于n个元素的排序问题,当n=1时,不需任何计算。n=2时,只要作一次比较即可排好序。n=3时只要作3次比较即可,…。而当n较大时,问题就不那么容易处理了。原创 2022-08-21 09:35:19 · 94 阅读 · 0 评论 -
非比较排序-计数排序、桶排序、基数排序(java实现)
非比较排序-计数排序、桶排序、基数排序(java实现)原创 2022-08-14 16:44:45 · 199 阅读 · 0 评论 -
排序算法-O(nlog)排序-快速排序、归并排序、堆排序(java实现)
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:想系统/深入学习某技术知识点…一个人摸索学习很难坚持,想组团高效学习…想写博客但无从下手,急需写作干货注入能量…热爱写作,愿意让自己成为更好的人……...原创 2022-08-14 15:17:17 · 234 阅读 · 0 评论 -
简单O(n^2)排序-冒泡、选择、直接插入、二分插入排序(Java实现)
简单O(n^2)排序-冒泡、选择、直接插入、二分插入排序(Java实现)原创 2022-08-06 16:05:05 · 146 阅读 · 0 评论 -
查找算法【java实现】
对给出的数组进行遍历,依次与目标元素进行比较,如果匹配成功则返回当前匹配位置的下标,若遍历完所有元素,都没有找到目标元素,则返回-1表示匹配失败。原创 2022-08-04 10:51:06 · 66 阅读 · 0 评论 -
字符换匹配算法-KMP算法
首先,如果前后缀相,那么pIndex = next[pIndex]就相当于移动了最长公共前后缀长度,显然是拿模式串的前缀与主串的后缀进行匹配,那么为什么是最长,这是因为如果不是最长就会有遗落的情况。其中pattern.charAt(n)就是当前最长前缀的下一个字符,其核心思想就是如果当前最长前缀的下一个字符和当前字符相同,那么就可以在当前最长前缀的长度上加1即可,否则就将当前最长前缀(当前最长前缀下标对应的next数组值)。可以明显的看到通过next数组,我们省去了很多不必要的比较,在代码中的的表达就是。.原创 2022-08-04 09:43:42 · 65 阅读 · 0 评论 -
字符串匹配算法-BF算法
归结起来,焦虑的原因就两条:想同时做很多事,又想立即看到效果.一步一个脚印,加油!原创 2022-08-03 19:38:34 · 82 阅读 · 0 评论