摘要: 递归简介 递归是一种解决问题的方法,将问题分解为更小的子问题,直到得到一个足够小的问题可以被很简单的解决,通常递归涉及函数调用自身。 递归三定律 1. 递归算法必须具有基本情况。 2. 递归算法必须改变其状态并向基本情况靠近。 3. 递归算法必须以递归方式调用自身。 举例 递归实现Fibonacci 阅读全文
posted @ 2019-04-09 11:23 youngliu91 阅读(243) 评论(0) 推荐(0) 编辑
摘要: | 排序算法 | 最好时间复杂度|平均时间复杂度 |最坏时间复杂度|空间复杂度|是否稳定| | : : | : : | : : | : : | : : | : : | | 冒泡排序 |$O(n)$|$O({n^2})$|$O({n^2})$| $O(1)$ |是 | | 选择排序 |$O({n^2} 阅读全文
posted @ 2019-04-09 10:49 youngliu91 阅读(415) 评论(0) 推荐(0) 编辑
摘要: 定义 二分查找又称折半查找,它是一种效率较高的查找方法。 二分查找要求:线性表是 有序表 ,即表中结点按关键字有序,并且要用向量作为表的存储结构,不妨设有序表是递增有序的。 算法思想 设 是当前的查找区间 1. 首先确定该区间的中点位置; 2. 然后将待查的K值与R[mid].key比较:若相等,则 阅读全文
posted @ 2019-04-09 10:34 youngliu91 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 算法思想 1. 先取一个正整数d1 &array) { int len = array.size(); int i, j, gap; // gap为步长,每次减为原来的一半。 for (gap = len / 2; gap 0; gap /= 2) { // 共gap个组,对每一组都执行直接插入排序 阅读全文
posted @ 2019-04-09 09:51 youngliu91 阅读(181) 评论(0) 推荐(0) 编辑