数据结构和算法到底有什么用?一个例子说明。
2017-06-08 04:22
316 查看
刚入数据结构和算法的坑,但是对其运用很是疑惑,网上一通搜,到底有什么用?没有讲的清楚的。在一本数据结构和算法的书里翻到一个小例子算是解了我的惑,是的,本人就是这么愚不可及,需要用代码告诉我有什么用。
根据班级同学不同的分段给出评级。
一个班级里不同分段的人数不是相等的,而是有着峰值和低谷。如何利用呢?
不及格1人,及格2人,中等4人,良好2人,优秀1人。
程序1:
if(a<60){
b="不及格";
}else if(a<70){
b="及格";
}else if(a<80){
b="中等";
}else if(a<90){
b="良好";
}else {
b="优秀";
}
执行次数:1×1+2×2+4×3+2×4+1×5=30
完全没利用到数据本身特点。
程序2:
if(a<80){
b="中等40";
}else if(a<70){
b="及格20";
}else if(a<90){
b="良好20";
}else if(a<60){
b="不及格10";
}else {
b="优秀10";
}
执行次数:4×1+2×2+2×3+1×4+1×5=23
利用情况一般
程序3:
if(a<80){
if(a<70){
if(a<60){
a="不及格"
}
a="及格";
}
a="中等";
}else{
if(a<90){
a="良好"
}
a="优秀"
}
这个就不算了,肯定效率高多了。
程序3的设计其实就是数据结构里的赫夫曼树,发明目的是解决远距离通信的数据传输最优化问题,我们写程序的时候多考虑一些执行效率上的问题,自然很多算法和数据结构都有用武之地,算法和数据结构这个东西分开谈没意义,就向上例,数据之间没有一定的树层级关系,你用屁的算法。对了,上例的优化不针对树,如果数据中间峰值两边低谷这个顺序,用二分查找效率也是刚刚的,当然会麻烦一点,而且数据不是这个顺序怎么办,当然这是不同情况下的适应性问题了。谈谈为什么我会有这个思路,因为数据结构里讲到过四种数据逻辑结构,上例明显是从树形结构出发的,我们学过就会想想用集合和线性结构下的最优解,自然思路就出来了。
其他运用如栈的应用,四则运算表达式求值,编译器使用栈实现递归,函数出入栈。
根据班级同学不同的分段给出评级。
一个班级里不同分段的人数不是相等的,而是有着峰值和低谷。如何利用呢?
不及格1人,及格2人,中等4人,良好2人,优秀1人。
程序1:
if(a<60){
b="不及格";
}else if(a<70){
b="及格";
}else if(a<80){
b="中等";
}else if(a<90){
b="良好";
}else {
b="优秀";
}
执行次数:1×1+2×2+4×3+2×4+1×5=30
完全没利用到数据本身特点。
程序2:
if(a<80){
b="中等40";
}else if(a<70){
b="及格20";
}else if(a<90){
b="良好20";
}else if(a<60){
b="不及格10";
}else {
b="优秀10";
}
执行次数:4×1+2×2+2×3+1×4+1×5=23
利用情况一般
程序3:
if(a<80){
if(a<70){
if(a<60){
a="不及格"
}
a="及格";
}
a="中等";
}else{
if(a<90){
a="良好"
}
a="优秀"
}
这个就不算了,肯定效率高多了。
程序3的设计其实就是数据结构里的赫夫曼树,发明目的是解决远距离通信的数据传输最优化问题,我们写程序的时候多考虑一些执行效率上的问题,自然很多算法和数据结构都有用武之地,算法和数据结构这个东西分开谈没意义,就向上例,数据之间没有一定的树层级关系,你用屁的算法。对了,上例的优化不针对树,如果数据中间峰值两边低谷这个顺序,用二分查找效率也是刚刚的,当然会麻烦一点,而且数据不是这个顺序怎么办,当然这是不同情况下的适应性问题了。谈谈为什么我会有这个思路,因为数据结构里讲到过四种数据逻辑结构,上例明显是从树形结构出发的,我们学过就会想想用集合和线性结构下的最优解,自然思路就出来了。
其他运用如栈的应用,四则运算表达式求值,编译器使用栈实现递归,函数出入栈。
相关文章推荐
- session.flush方法到底干了一些什么事情,举一个具体的例子说明
- 用一个例子说明什么是多态
- 一个例子说明机器学习在做什么
- 一个例子说明机器学习在做什么
- 【郝斌数据结构自学笔记】26_通过链表排序算法的演示再次详细讨论到底什么是算法以及到底什么是泛型【重点】
- 一个例子试着说明算法
- 一个例子试着说明算法
- [编程难题]编写一个求解时间满足约束的的算法.说明内详
- 举一个简单例子来说明:如何在JSP中使用JavaBean
- 《Delphi 算法与数据结构》学习与感悟[5]: 定位一个字符位置时, Pos 函数为什么不是最快的?
- 要完整准确的 均以单链表作存储结构 试编写算法将A表和B表归并成一个按元素值递减有序的线性表C 【数据结构】假设有两个按元素值递增有序的线性表A和B 并要求利用原表的空间存放C。谁会么
- 合并小文件——一个算法在实际程序开发中应用的例子
- 用一个例子来说明程序开发过程中的粒度和弹性控制
- 从刘古权老师的话引出:服务到底是一个什么概念? 推荐
- 《Delphi 算法与数据结构》学习与感悟[3]: 获取一个字节中非空位的个数
- 一个小故事来说明什么是ERP
- 以一个最简单的例子把OO的JavaScript说明白
- 推荐一个关于.NET平台数据结构和算法的好项目
- 以一个最简单的例子把OO的JavaScript说明白
- 当生活比较迷茫的时候,我就会想起这样一个问题,人到底为了什么而活着?