算法:
计算=信息处理 借助某种工具,遵照一定规则,以明确而机械的形式进行

计算模型=计算机=信息处理工具所谓算法,旨在解决特定问题的指令序列     输入:待处理的信息(问题)输出:经处理的信息(答案)正确性:的确可以解决指定的问题确定性:任以算法都可以描述为一个由基本操作组成的序列可行性:每一基本操作都可实现,且在常熟时间内完成有穷性:对于任何输入,经过有穷次基本操作,都可以得到输出  .....Hailstone(n)={ {1}                      n<=1  {n} 并 Hailstone(n/2)    n 偶{n} 并 Hailstone(3n+1)   n 奇}int hailstone(int n)//计算序列hailstone(n)的长度
{int length=1;//从1开始,以下按定义逐步递推,并累计步数,直至n=1while(1<n){(n%2)? n=3*n+1:n/=2;length++;return length;//返回hailstone}好算法:正确:符合语法,能够编译,链接能够正确处理简单的输入能够正确处理大规模的输入能够正确处理一般性的输入能够正确处理退化的输入能够正确处理任意合法的输入健壮:能辨别不合法的输入并做适当处理,而不致非正常退出可读:结构化+准确命名+注释+...效率:速度更可能快;存储空间尽可能少data Structure +Algorithm(算法)  简称 DSA    RAM:Random Access Machine 算法分析:正确性成本:运行时间+所需存储空间上溢:当一个超长的数据进入到缓冲区时,超出的部分被写入到上级缓冲区,上级缓冲区,

上级缓冲区存放的可能是数据,上一条指令的指针,或者是其他程序的输出内容,这些内容被覆盖或
者破坏掉。

      下溢:当一个超长的数据进入到缓冲区时,超出的部分被写入下级缓冲区,下级缓冲区存放

的是下一条指令的指针,或者是其他程序的输出内容。

起泡排序:void bubblesort(int A[],int n){for(bool sorted=false;sorted=!sorted;n--)//逐趟扫描交换,直至完全有序for(int i=1;i<n;i++)//自左向右,逐对检查A[0,n)内各相邻元素if(a[i-1]>a[i]){swap(A[i-1],A[i]);//令其互换sorted=false;//清除(全局)有序标志  }}不变性:经过K轮扫描交换后,最大的K个元素必然就位单调性:经K轮扫描交换后,问题规模缩减至n-k正确性:经至多n趟扫描后,算法必然终止,且能给出正确解答计算n个整数之和:int sunI(int A[],int n)    E2{int sum=0;for(int i=0;i<n;i++)sum+=A[i];return sum;}减而治之:为求解一个大规模的问题,可以将其划分为两个子问题,其一是平凡,另一规模缩

减(//单调性),分别求解子问题,由子问题的解,得到原问题的解。

 数组求和:线性递归sum(int A[],int n){return (n<1) ?0:sum(A,n-1)+A[n-1];}数组倒置:任给数组A[0,n),将其前后颠倒统一接口:void reverse(int *A,int lo,int hi);递归版:if(lo<hi)//问题规模的奇偶性不变,需要两个递归基     E5{ swap(A[lo],A[hi]); reverse(A,lo+1,hi-1);}迭代原始版:next:if(lo<hi){swap(A[lo],A[hi]);lo++;hi--;goto next;}迭代精简版:while(lo<hi) swap(A[lo++],A[hi--]);分而治之:为求解一个更大规模的问题,可以将其划分为若干(通常2个)子问题,规模大体相当

分别求解子问题,由子问题的解,得到原问题的解。

  数组求和:二分递归sum(int A[],int lo,int hi)//区间范围A[lo,hi]{if(lo==hi)   return A[lo];int mi=(lo+hi)>>1;//右移,也相当于除2return sum(A,lo,mi)+sum(A,mi+1,hi)}//入口形式为sum(A,0,n-1)迭代1:从数组区间A[lo,hi)中找出最大两个整数A[x1]和A[x2]元素比较次数,要求尽可能地少void max2(int A[],int lo,int hi,int &x1,int &x2)//1<n=hi+lo  {for(x1=lo,int i=lo+1;i<hi;i++)//扫描A[lo,hi),找出A[x1]if(A[x1]<A[i])   x1=i;//hi-lo-1=n-1for(x2=lo,int i=lo+1;i<x1;i++)  //扫描A[lo,x1)if(A[x2]<A[i])   x2=i;// x1-lo-1for(int i=x1+1;i<hi;i++)//再扫描A(x1,hi),找出A[x2]if(A[x2]<A[i])   x2=i;//hi-x1-1}   迭代2:问题同上void max2(int A[],int lo,int hi,int &x1,int &x2)//1<n=hi+lo {if(A[x1=lo]<A[x2=lo+1])   swap(x1,x2);for(int i=lo+2;i<hi;i++)if(A[x2]<A[i])if(A[x1]<A[x2=i])swap(x1,x2);}递归+分治:问题同上void max2(int A[],int lo,int hi,int &x1,int &x2){if(lo+2==hi)  { /*.....*/; return; }//T(2)=1if(lo+3==hi)d

00000000 { /...../; return; }//T(3)<=3
int mi=(lo+hi)/2; //divide
int x1L,x2L; max2(A,lo,mi,x1L,x2L);
int x1R,x2R; max2(A,mi,hi,x1R,x2R);
if(A[x1L]>A[x1R])
{
x1=x1L;x2=(A[x2L]>A[x1R])? x2L:x1R;
}else
{
x1=x1R; x2=(A[x1L]>A[x2R])? x1L : x2R;
}//1+1=2
}
动态规划: XC3
fib():迭代
动态规划:颠倒计算方向,由自顶而下递归,为自底而上迭代
f=0; g=1;//fib(0),fib(1)
while(0<n--)
{
g=g+f;
f=g-f;
}
return g;

转载于:https://www.cnblogs.com/qichunlin/p/8922416.html

2018.4.23 数据结构相关推荐

  1. 暑期训练日志----2018.8.23

    训练第25天. 上午把前两天的区间 DP 和状压 DP 又看了一遍,加深一下理解 中午有点困就回去睡觉,果不其然的睡过了...一下午基本啥都没干...难受 晚上把前天比赛的题解写了写,昨天的比赛明天上 ...

  2. 苏嵌//张福辉//2018.7.23

    苏嵌                                                                                                   ...

  3. 2018.10.23 第2周的第1次小组讨论

    2018.10.23 第2周的第1次小组讨论 签到表 问题陈述 附录一 国际标准的围棋规则 附录2 界面显示 签到表 学号 姓名 状态 1120151719 马小东 到 1120151725 王鹏宇 ...

  4. 2018.12.23 周日--【绝代风华】《幸福2018》

    本文地址:2018.12.23 周日--[绝代风华]<幸福2018> 原文地址(微信公众号):[绝代风华]<幸福2018> 一.概述2018年 [01 2018年的我]: 说起 ...

  5. 数据结构----顺序表的增和遍历(2018/10/23)

    数据结构包含顺序表和链表 顺序表方便改和查 链表便于增删 顺序表的增和遍历: 代码一: 1 using System;2 namespace deaiWith3 {4 class MySeqList& ...

  6. 苏嵌//张朋//2018.07.23

    苏嵌                                                                                                   ...

  7. 2星|《快公司》2018年2-3期:商业人物访谈集

    快公司2018年2期/2018年3期:乐观派领导力 本期杂志基本是一些商业人物的访谈集.大部分商业人物都是国内读者不熟悉的美国小公司的领导. 总体评价2星,参考价值不大. 以下是书中一些内容的摘抄,# ...

  8. 2018.3.23 13周5次课

    十三周五次课(3月23日) 13.4 mysql用户管理 13.5 常用sql语句 13.6 mysql数据库备份恢复 13.4 mysql用户管理 MySQL创建用户以及授权 授权给ip grant ...

  9. ACM赛后总结2018.09.23

    昨天 2018的acm网络赛就告辞一段落了 听着罗老师的建议,要赛后进行总结,昨天那一场北京场还有点记忆,就来写写感受,顺便写写这一个星期遇到的难题 昨天打的是训练赛,和hhr和zcy组队,一开始zc ...

最新文章

  1. 010——VUE中使用lodash库减少watch对后台请求的压力
  2. 关于[__NSCFArray removeObjectAtIndex:]: mutating method sent to immutable object的报错分析
  3. (~最新合集~)计算机网络谢希仁第七版 第五章课后答案
  4. 投资,个人未来的生存之道(任何个人必知)
  5. Ubuntu开启防火墙
  6. Oracle、 Mysql 、 SQLserver 分页查询
  7. jquery可拖拽式内容模块gridder
  8. php 处理微信昵称含有特殊符号
  9. 复旦大学电子信息专业考研上岸经验分享
  10. drupal 执行.php文件,Drupal7.xPHP代码执行漏洞分析
  11. HTML5期末大作业:网上鲜花网站设计——网上鲜花网页设计(5页)HTML+CSS+JavaScript web期末作业设计网页
  12. IDEA2021.2安装与配置(持续更新)
  13. Acer TravelMateP249主板上最容易被人忽略的問題
  14. 如何重置计算机服务到默认状态,电脑慢到让人抓狂?教你如何将Windows10还原到出厂设置...
  15. 解决svn冲突的办法
  16. 联通鸿蒙卡怎么样,联通腾讯大王卡对比百度大神卡:到底选谁看完就明白了
  17. Unity3D中级开发工程师面试指导
  18. 制作emwin个性化控件
  19. 羞辱iPhone! 安卓配Mac才最爽?老司机道出8个爽点...(iPhone骂骂咧咧退出群聊)...
  20. 数学思想——1.SEIR模型

热门文章

  1. [扩展中国剩余定理(EXCRT)]
  2. java B2B2C 多租户电子商城系统- 整合企业架构的技术点
  3. redis中各种数据类型对应的jedis操作命令
  4. ArcEngine中多边形内外环的处理(转)
  5. salt-api安装与配置
  6. pycharm vim 插件IdeaVIM
  7. GDAL交流 QQ群
  8. sencha extjs4 command tools sdk
  9. asp.net取消页面表单内文本输入框的Enter响应
  10. linus系统下载_系统管理程序卷土重来,Linus拒绝并阅读电子邮件,以及更多行业趋势