数据结构
骚年,你渴望力量嘛?
在读研究生,初来乍到,多多指教。
展开
-
二分查找数组指定元素(低效版c++)
目录 功能: 思路: 代码: 复杂度分析: 功能: 对于一个已经排好序的整数数组,需要查找指定元素是否在整数数组中,如果指定元素在数组中,返回该元素的序号,否则查找失败。 思路: 采取减而治之的思想,把一个大问题分解两个子问题,其一是平凡问题,另一个规模缩减。 二分查找的流程是:先下数组A[lo,hi)之间取一个点mi,这时mi把数组分成3段。 分别为[lo,mi),mi,(mi,hi),三个区间,假设需要查找的数为e,该值可能位于3个区间的任意一个。 (1)如果e<A[.原创 2020-11-09 19:36:32 · 321 阅读 · 1 评论 -
删除数组重复元素(高效版c++)
目录 功能: 代码: 功能: 删除数组中重复元素,如{ 3 ,3, 3, 3, 5, 5 ,5 ,5, 7, 7, 7, 7, 1, 1, 1, 1 }变成{3,5,7,1} 时间复杂度O(n) 代码: #include <iostream> using namespace std; #define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));} int main() { ..原创 2020-11-08 10:48:57 · 2486 阅读 · 3 评论 -
斐波那契数列-动态规划解法(c++)
动态规划: 此处采用动态规划的方法进行,即从底自上运算,空间和时间消耗非常客观 #include <iostream> using namespace std; //此处采用动态规划的方法进行 //即从底自上运算,空间和时间消耗非常客观 void fib(int n) { int f = 0; int g = 1; while (0<n--) { //需要理解的地方 //f,g就像指针一样,一步一步的往前推进 //对于第三项,g等于前两项0和1相加 //f需要占原创 2020-10-10 19:24:06 · 1154 阅读 · 0 评论 -
数据结构邓俊辉——递归+分治(max2最大值与次大值)
问题: 在一个数组中找出最大的两个数,要求比较的次数尽可能少。 方法: 分治+递归 分治思想: 字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。 步骤: step1 分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题; step2 解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题 step3 合并:将各个子问题的解合并为原问题的解。 代原创 2020-10-07 10:05:59 · 535 阅读 · 3 评论 -
数据结构基础-冒泡排序
学习目标:冒泡排序 掌握冒泡排序的原理以及代码实现 学习内容: 1、 原理 2、 代码 学习产出: 1、 逐趟扫描:大循环里面套一个小循环。每一趟大循环之后都把所在的那一趟的最值都排到最后。如下数列描述,在第一趟中把4的值换到它应该在的位置,之后每趟按照顺序把数给送到应该在的位置,直到最后一趟。 2.代码 // bubble_sort.cpp : #include <iostream> using namespace std; void bubble_sort(int n[], i原创 2020-10-02 17:35:31 · 124 阅读 · 0 评论 -
大O记号常用级数汇总
最好记住以下常见级数 算数级数:与末项平方同阶 T(n) = 1+2+ … +n=n(n+1)/2=O(n^2) 幂方级数:比幂次高出一阶 几何级数(a>1):与末项同阶 收敛级数 1/1/2+1/2/3+1/3/4+…1/(n‐1)/n=1‐1/n<1=O(1) 1 + 1/22 + … + 1/n2 < 1 + 1/22 + … = \pai^2/6 = O(1) 调和级数 1 + 1/2 + 1/3 + … + 1/n = Theta(log原创 2020-09-29 22:03:35 · 1175 阅读 · 0 评论