![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
海重山青
每天都要学习新东西!也要温故而知新!
展开
-
算法的时间复杂度和空间复杂度
简介算法复杂度分为时间复杂度和空间复杂度。时间复杂度算法执行所需的时间长短空间复杂度算法执行所需的内存空间大小时间复杂度这里不说那些难懂的计算方式。只会列出部分级别的时间复杂度以及对应的例子。选择算法时可以对号入座。下面是各个级别对应的走势。 画的是真心不规范,只能把代表的大致走势画出来。 O(n^2)和O(n^3)差不多的走势,只不过后...原创 2018-03-16 16:12:59 · 346 阅读 · 0 评论 -
图的深度优先遍历和广度优先遍历
图的遍历图的遍历是和树的遍历类似,我们希望从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次,这一过程就叫做图的遍历(Traversing Graph)。重复访问顶点就不叫做遍历了。关于图的基本概念,理论知识不想说了。太繁琐~直接上图,这个应该都能看懂。左图是一个图,右图是根据图生成的矩阵。[v0][v1]代表v0顶点到v1顶点的路径权重为10可以看见右...原创 2018-03-19 22:51:18 · 876 阅读 · 0 评论 -
快速排序
简介快速排序是冒泡排序的一种改进。开发中,快速排序用的非常多。选择排序的思想也非常简单 通过一趟排序将要排序的数据分割成独立的两部分,其中前一部分的所有数据都比另外后一部分的所有数据都要小。然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。核心代码public class QuickSort { publ...原创 2018-03-17 19:13:43 · 268 阅读 · 0 评论 -
堆排序
简介堆排序是利用完全二叉树这种数据结构当成顺序存储结构所设计的一种排序算法。堆排序的思想我不想说那么多理论,单纯的说下堆排序的步骤。步骤一:首先将一个数组的所有元素当成一个二叉树操作。这个操作叫创建堆,目的是对于每一个非叶子节点,形成 父节点 < 左孩子 < 右孩子 这种结构。步骤二:取出根节点,进行输出。然后不断将最后一个子节点放到根节点进行创建堆操作。再取出根节点...原创 2018-03-17 16:38:44 · 227 阅读 · 0 评论 -
插入排序之希尔排序
简介希尔排序(Shell’s Sort)是插入排序的一种又称”缩小增量排序“(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。希尔排序的思想 因为真的确定不了增量,所以可以使用while(true)这种方式。break条件是增量为1。按增量分组进行比较,随着增量的缩小。每组包含的元素越来越多,到最后增量为1就...原创 2018-03-17 14:19:49 · 215 阅读 · 0 评论 -
插入排序之二分法插入排序
简介二分法插入排序没有排序,只有查找。所以当找到要插入的位置时。移动必须从最后一个记录开始,向后移动一位,再移动倒数第2位,直到要插入的位置的记录移后一位。二分法插入排序的思想 对于每次循环,都有left,mid,right3个局部变量做支持。将要插入的元素同mid位置元素比较,选择left - mid-1还是mid+1 - right。最后记录left的位置,这个位置就是要插入的...原创 2018-03-17 13:49:50 · 3169 阅读 · 0 评论 -
插入排序之直接插入排序
简介直接插入排序也是很简单的排序,属于插入排序中的一种。直接插入排序的思想 从数组下标1元素开始,0和1比较并交换。0-1成为一个有序序列。接着元素2和0-1比较并交换,0-2成为一个有序序列。以此类推。核心代码/** * 直接插入排序 * * @param a */public static void insertSort(int[] a) {...原创 2018-03-17 13:49:12 · 254 阅读 · 0 评论 -
蛮力法之选择排序(简单易懂)
简介选择排序也属于基本的教学式排序,真正的开发基本不会独立使用。同样属于蛮力法。选择排序的思想也非常简单 首先假设元素0是最小值,用index保存。遍历所有元素,如果碰到比元素0**更小**的。index记录这个更小的元素的下标。遍历比较完后,发现index改变。说明有最小值,则将这个最小值和元素0进行交换。这样,第一次遍历完。找到最小值。接下来,同样的方式从元素1开始假设、比...原创 2018-03-17 11:14:54 · 3321 阅读 · 0 评论 -
蛮力法之冒泡排序(简单易懂)
简介冒泡排序属于基本的教学式排序,真正的开发基本不会独立使用。它属于蛮力法。冒泡排序的思想非常简单 遍历所有元素,将元素0和1,1和2,2和3这样进行比较。值大的放到后面,像冒泡一样向上升。遍历完第一遍,数组的最后一个值一定是最大值。然后再进行遍历、比较。完后,数组的倒数第二个值为第二大值。以此类推!核心代码/** * 冒泡排序 * * @param a...原创 2018-03-17 10:40:32 · 1909 阅读 · 0 评论 -
图的连通法之普里姆算法和卡鲁斯卡尔算法
最小生成树连通图:图的连通其实就是树,图的最小连通图其实就是最小生成树。树:如果一个无向连通图中不存在回路,则这种图称为树。生成树:无向连通图G的一个子图如果是一颗包含G的所有顶点的树,则该子图称为G的生成树。最小生成树:或者称为最小代价树,对无向连通图的生成树,各边的权值总和称为生成树的权,权最小的生成树称为最小生成树。一个连通图的生成树是一个极小的连通子图,它含有图...原创 2018-03-20 17:17:02 · 1574 阅读 · 0 评论