![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
onj123
这个作者很懒,什么都没留下…
展开
-
五、数学计算
最大公约数 方法:欧几里得互除法,被除数(比较大那个)对除数取模,获得余数。再以除数作为被除数,余数作为除数,再取模。一直循环直到余数为0时的除数就是最大公约数。 int fun(int a, int b) { int c = 0; if (a<b) { c = a; a = b; b = c; } while(b!=0){ c = a%b; a = b; b = c...原创 2020-01-19 17:54:29 · 242 阅读 · 0 评论 -
四、搜索算法
线性搜索 特点:适用于随机的数据,从头开始,一个个查找。随着数据量增大,查找越耗时。 步骤: 1. i<n时进行查找 2. 找到break跳出循环,找不到i++ 3. 循环结束时,i<n则i是下标,i=n则没找到 二分搜索 特点:适用于已经排好序的数据,找到中间数据,通过比较判断数据在中间数据的哪一边,再将剩下的数据分为两半,不停查找(查找范围缩小一半) 步骤: 1. 当查找数据大于1...原创 2020-01-19 17:52:35 · 292 阅读 · 0 评论 -
三、排序算法
所有例子都是升序排序。 数据分成两部分:已排序和待排序。 排序过程中,数据移动分为两种: 1. 直接移动:移动数据的存储位置,消耗时间 2. 逻辑移动:改变指向这些数据的指针 选择排序 特点:遍历待排序数据,把最小值与起始数据(最左边)交换位置 次数:第一轮n-1次,第k轮n-k次 步骤: 1. 如果待排序数据大于0,则循环2,3 2. 从待排序的数据取第一个值data[i](前面的i-1个数据已...原创 2020-01-19 17:51:33 · 137 阅读 · 0 评论 -
二、数据结构
数组(线性,随机访问) 特点:编译时分配存储空间,存储空间连续,可快速查找、修改指定下标的数据,但是插入、删除时需要移动指定下标之后的数据 字符串和数组:字符串就是一维数组+结束标志(空字符) 链表(线性,顺序访问) 特点:包含数据域和指针域,程序执行时分配存储空间,存储空间不连续(数据和存储位置无关),数据可伸缩、定向,可快速插入、删除数据、修改数据,但是查找比较慢(需要从第一个数据开始遍历) ...原创 2020-01-19 17:50:35 · 141 阅读 · 0 评论 -
一、时间复杂度
程序 = 数据结构 + 算法 1. 数据结构:高效处理大量数据的构造(数据的位置和顺序) 2. 算法:解决方案,解决问题的有限步骤 优秀的算法 1. 准确性(结果正确) 2. 可停止性(在有限的时间内结束) 3. 程序更高效(更快) 4. 花费资源更小(内存和程序存储空间) 时间复杂度O(f(n))(衡量算法好坏,总用用了多少步) T(n):程序的运行时间,n是数据输入量 f(n):运行时间成...原创 2020-01-19 17:49:02 · 406 阅读 · 0 评论