当前位置: 首页 > news >正文

网站平台建设服务承诺书wordpress搜索框代码

网站平台建设服务承诺书,wordpress搜索框代码,用html5做手机网站,沈阳市城市建设网站目录 数据结构 数据结构中的基本名词 数据 数据对象 数据元素 数据项 数据类型 数据对象、数据元素和数据项之间的关系 数据结构及分类 逻辑结构 物理结构 算法 算法的特点 算法设计上的要求 算法效率的衡量 时间复杂度 大O渐进表示法 最坏情况和平均情况 常…目录 数据结构 数据结构中的基本名词 数据 数据对象 数据元素 数据项 数据类型 数据对象、数据元素和数据项之间的关系 数据结构及分类 逻辑结构 物理结构 算法 算法的特点 算法设计上的要求 算法效率的衡量 时间复杂度 大O渐进表示法 最坏情况和平均情况 常见的时间复杂度计算 常数阶 线性阶 求和 倍数 对数阶 次方阶 等差数列平方阶 等比数列次方阶 空间复杂度 常见的空间复杂度计算 常数阶仅常数个存储单元开辟 线性阶主要分析递归 数据结构 数据结构中的基本名词 数据 描述客观事物的符号是计算机中可以操作的对象是能被计算机识别并输入给计算机处理的符号集合例如整型数据、字符数据、图片数据、音频数据 数据对象 性质相同的数据元素的集合是数据的子集因为是数据的子集数据包括各种类型而数据对象指的是具体的某一种类型所以数据对象也可以简称为数据 数据元素 组成数据的、有一定意义的基本单位在计算机中通常作为整体处理也被称为记录 数据项 一个数据元素可以由若干个数据项组成数据项是数据中不可分割的最小单位 数据类型 一组性质相同的值的集合及定义在此集合上的一些操作的总称例如表格的整型是整数的集合 抽象数据类型 一个数学模型以及定义在该模型上的一组操作既包括以及定义并实现的数据类型也包括自定义类型和对应的实现方法 数据对象、数据元素和数据项之间的关系 //定义数据这个数据中包含两个数据对象//第一个数据对象 struct Person {int age;//数据项char name[20];//数据项 }//第二个数据对象 struct lessons {char lesson[20];//数据项int credits;//数据项 }//使用两个数据对象分别创建两个数据元素 //第一组数据元素 struct Person Peter {20, Peter}; struct Person Mark {18, Mark}; //第二组数据元素 struct Lesson_P {English, 2}; struct Lesson_M {Mathematics, 2}; 数据[struct Person struct lessons] 数据对象[struct Person struct lessons] 数据元素[Peter 和 Mark] 数据元素[Lesson_P和Lesson_M] 数据项 [整型age] 数据项 [字符数组类型name] 数据项 [字符数组类型lesson] 数据项 [整型credits] 数据结构及分类 结构不同数据元素之间不是独立的而是存在特定的关系这些关系称为结构 数据结构在计算机中存储、组织数据的方式相互之间存在一种或多种特定关系的数据元素的集合。主要是在内存中管理数据基本的管理方式有增加数据元素、删除数据元素、查找数据元素和修改数据元素 数据结构可以分为逻辑结构和物理结构 逻辑结构 数据对象中数据元素之间的相互关系 逻辑结构包括 集合结构集合结构中的数据元素除了同属于一个集合外没有其他关系线性结构线性结构中的数据元素之间是一对一的关系树形结构树形结构中的数据元素之间存在一对多的层次关系图形结构图形结构的数据元素是多对多的关系 物理结构 指数据的逻辑结构在计算机中的实际存储形式 物理结构包括 顺序存储结构把数据元素存放在地址必然连续的存储单元内存里其数据间的逻辑关系和物理关系一致链式存储结构把数据元素存放在任意的存储单元内存里而这些存储单元可以连续也可以不连续 逻辑结构是面向问题的而物理结构就是面向计算机的其基本的目标就是将数据及其逻辑关系存储到计算机的内存中 算法 算法就是定义良好的计算过程他取一个或一组的值为输入并产生出一个或一组值作为 输出。简单来说算法就是一系列的计算步骤用来将输入数据转化成输出结果 算法的特点 输入输出特点 对于输入算法可以没有输入和多个输入对于输出算法至少有一个或多个输出有穷性算法在执行有限的步骤之后自动结束而不会出现死循环并且每个步骤在可接受的时间内完成确定性算法的每一步骤都具有确定的含义不会出现二义性即相同的输入只有唯一的输出结果可行性算法的每一步都必须是可行的即每一步都能通过执行有限次数完成 算法设计上的要求 正确性正确性算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性能正确反映问题的需求能够得到问题的正确答案可读性算法设计的另一目的是为了便于阅读、理解和交流健壮性当输入数据不合法时算法也能做出相关处理而不是产生异常或莫名其妙的结果时间效率高和存储量低 算法效率的衡量 衡量一个程序的好坏一般从时间和空间两个维度进行衡量即时间复杂度和空间复杂度 在程序中时间复杂度主要衡量一个算法的运行快慢空间复杂度主要衡量一个算法运行所需要的额外空间 时间复杂度 在计算机科学中算法的时间复杂度是一个数学函数它定量描述了该算法的运行时间。一个算法所花费的时间与其中语句的执行次数成正比例算法中的基本操作的执行次数为算法的时间复杂度。即找到某条基本语句与问题规模N之间的数学表达式就是算出了该算法的时间复杂度 在计算时间复杂度时通常不需要计算出精确的执行次数只需要计算大概执行的次数故在计算时采用大O的渐进表示法 大O渐进表示法 大O符号Big O notation是用于描述数学函数渐进行为的数学符号 推导大O阶方法 用常数1取代运行时间中的所有加法常数在修改后的运行次数函数中只保留最高阶项如果最高阶项存在且不是1则去除与这个项目相乘的常数。得到的结果就是大O阶 例如对于下面的C语言代码试计算出下面代码的时间复杂度 // 请计算一下Func1中count语句总共执行了多少次 void Func1(int N) {int count 0;for (int i 0; i N ; i){for (int j 0; j N ; j){count;}}for (int k 0; k 2 * N ; k){count;}int M 10;while (M--){count;}printf(%d\n, count); } 不计算创建变量和打印语句直观准确来计算时大概率得出一个公式即 但是时间复杂度计算的是一个估计值也就是说我们不需要完全准确地将代码执行次数计算出来对于上面的表达式由于的增长速度要大于n当n→∞时n对函数整体计算出来的值影响并不大故取而不是取n另外在计算时间复杂度时加法常数一般是忽略不计的 所以上面代码在计算时间复杂度时只需要取出即可即O() 最坏情况和平均情况 最坏情况任意输入规模的最大运行次数(上界) 平均情况任意输入规模的期望运行次数 最好情况任意输入规模的最小运行次数(下界) 例如在一个长度为N数组中搜索一个数据x 最好情况1次找到 最坏情况N次找到 平均情况次找到 在实际中一般情况关注的是算法的最坏运行情况所以数组中搜索数据时间复杂度为O(N) 常见的时间复杂度计算 常数阶 void Func4(int N) {int count 0;for (int k 0; k 100; k){count;}printf(%d\n, count); } 在上面的代码中代码的运行次数不计算创建变量和打印语句共运行了100次在计算平均复杂度时因为100为常数次故时间复杂度为O(1) 计算时间复杂度时不论常数是多少都记作O(1)不能是其他数字 线性阶 求和 void Func3(int N, int M) {int count 0;for (int k 0; k M; k){count;}for (int k 0; k N ; k){count;}printf(%d\n, count); } 上面的代码中第一个for循环和第二个for循环分开进行故最后时间复杂度为O(MN) 注意时间不可以共享只能累积 long long Fac(size_t N) {if(0 N)return 1;return Fac(N-1)*N; } 上述代码是个函数递归由于计算时间复杂度时计算的是代码执行的次数故此处时间复杂度即为递归次数取决于N故此代码时间复杂度为O(N) 注意这里实际代码执行的次数为N1次例如N 5时有 Fac(5)→Fac(4)→Fac(3)→Fac(2)→Fac(1)→Fac(0)递归结束后再返回故调用了6次 但是在计算时间复杂度时忽略常数故时间复杂度为O(N) 倍数 void Func2(int N) {int count 0;for (int k 0; k 2 * N ; k){count;}int M 10;while (M--){count;}printf(%d\n, count); } 上面的代码中在计算时间复杂度时可能开始计算时答案为O(2NM)但是注意在计算时间复杂度时不需要最高次项的系数和常数尽管这里的M是变量但是变量中已经给了常量10所以变量M算作常量可以去掉故本题时间复杂度为O(N) 对数阶 int BinarySearch(int* a, int n, int x) {assert(a);int begin 0;int end n-1;while (begin end){int mid begin ((end-begin)1);if (a[mid] x)begin mid1;else if (a[mid] x)end mid-1;elsereturn mid;}return -1; } 上面的代码是二分查找算法二分查找的原理是在有序的数组中查找数据找不到就进行折半操作 //对于数组 int nums[10] { 1,5,9,10,15,20,21,30,35,45 }; 在进行第一次查找过程中数组元素个数为10第二次查找数组元素个数为5第三次查找数组元素个数为2即元素个数n与代码执行次数x成对数关系每一次少一半也就是除以2即多少次折半对应多少个元素即 n以上面的数组为例当前10个元素则有等式 10故x≈3最坏情况下三次才能找到那么x对应的就是代码执行次数即时间复杂度故二分查找的时间复杂度为O()(注意此处的N为元素个数) 次方阶 等差数列平方阶 void BubbleSort(int* a, int n) {assert(a);for (size_t end n; end 0; --end){int exchange 0;for (size_t i 1; i end; i){if (a[i-1] a[i]){Swap(a[i-1], a[i]);exchange 1;}}if (exchange 0)break;} } 上面的代码中为冒泡排序算法而冒泡排序每一趟都会将满足条件的数值放到合适的位置如果有10个元素那么就要进行9次冒泡才可以将该数值放置在对应的位置 例如上面图中每一趟冒泡排序都将需要的数值放置在数组的最后一个元素的位置共需要9趟冒泡排序 而冒泡排序的原理是不满足条件进行两两交换每一趟排序中如果只有两个元素则只需要交换1次三个元素只需要交换两次那么n个元素就只需要进行n-1次故外层循环实际上执行了n-1次而内层循环随着外层循环执行次数的增长时逐渐减少也就是两两交换的次数就逐渐减少 例如上面图中每一趟冒泡排序中两两交换的次数都在随着趟数的增加而逐渐减少 所以在计算时间复杂度时可以看到10个元素时第一趟冒泡排序执行了9次第二趟冒泡排序执行了8次以此类推最后一趟冒泡排序执行了1次故总共执行次数为987654321 45其中9和1即首项和尾项*9中的9为冒泡排序的趟数。 故当有n个元素进行冒泡排序时第一趟冒泡排序需要执行n-1次第二趟执行n-2次以此类推最后一趟还是1次总共执行次因为最高此时为并且需要去掉系数故最后时间复杂度为O() 等比数列次方阶 long long Fib(size_t N) {if(N 3)return 1;return Fib(N-1) Fib(N-2); } 推荐使用二叉树进行分析此处暂不做分析给出答案为时间复杂度为O() 空间复杂度 空间复杂度也是一个数学表达式是对一个算法在运行过程中临时占用存储空间大小的量度在计算时也使用大O渐进表示法 函数运行时所需要的栈空间(存储参数、局部变量、一些寄存器信息等)在编译期间已经确定好了因此空间复杂度主要通过函数在运行时候显式申请的额外空间来确定例如变量的个数以及动态内存开辟的空间 常见的空间复杂度计算 常数阶仅常数个存储单元开辟 void BubbleSort(int* a, int n) {assert(a);for (size_t end n; end 0; --end){int exchange 0;for (size_t i 1; i end; i){if (a[i-1] a[i]){Swap(a[i-1], a[i]);exchange 1;}}if (exchange 0)break;} } 上面代码中由于创建了变量但是数量是常数个故空间复杂度为O(1) long long* Fibonacci(size_t n) {if(n0)return NULL;long long * fibArray (long long *)malloc((n1) * sizeof(long long));fibArray[0] 0;fibArray[1] 1;for (int i 2; i n ; i){fibArray[i] fibArray[i - 1] fibArray [i - 2];}return fibArray; } 上面代码中使用了malloc函数开辟了n1个空间故空间复杂度为O(N) 线性阶主要分析递归 long long Fac(size_t N) {if(N 0)return 1;return Fac(N-1)*N; } 上面代码中因为每次函数调用需要开辟函数栈帧从而消耗了空间而开辟的空间有N的个数决定实际开辟了N1个空间故空间复杂度为O(N) long long Fib(size_t N) {if(N 3)return 1;return Fib(N-1) Fib(N-2); } 推荐使用二叉树进行分析此处暂不做分析空间复杂度为O(N) 注意时间需要累积但是空间可以共享
http://www.pierceye.com/news/389116/

相关文章:

  • 贵州建网站网站怎么优化自己免费
  • 个人网站介绍源码网站制作昆山
  • 网站开发属于知识产权吗如何制作软件程序
  • 外贸网站模板源码网络架构如何写
  • 网站建设美工的职位要求建材做哪些网站好
  • 淘宝客自建网站wap免费空间
  • python快速搭建网站如何制作一个微信刷题小程序
  • 域名备案与网站备案网站漏洞解决
  • 公明做网站多少钱高端网站设计怎么样
  • 重庆网站建设 熊掌号wordpress 被发文章
  • 网站建设管理视频广东省农业农村厅班子
  • 网站建设需要钱吗开发一个小程序流程
  • 通州富阳网站建设做足彩网站推广
  • 一个公司做网站需要注意什么条件车之家汽车官网
  • 石家庄网站建设网站建设网站的制作哪家好
  • 苏州晶体公司网站网站排名优化各公司的
  • 网站开发大致多少钱团队拓展训练
  • p2p网站建设方案卫龙模仿iphone做网站
  • 做盗版电影网站犯法吗Wordpress 淘宝客 页面
  • 自己做网站费用html5结构的网站
  • wordpress做资源分享站做网站的图哪来
  • 国外设计欣赏网站线上建模培训班哪个好
  • 微信网站建设合同怎么在本地搭建网站
  • 班级网站怎么做网页制作临沂网站制作方案
  • 泰州网站建设服务好wordpress调用分类名
  • 中英切换的网站咋做怎样在网站做推广
  • 初学网站开发书籍如何提升网站打开速度
  • 深圳微信网站建设公司哪家好网站 维护 页面
  • 做个企业网站需要多少钱北京西站到大兴机场
  • 数字博物馆网站建设动态设计是什么意思