算法

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

特征

一个算法应该具有以下五个重要的特征:
有穷性
(Finiteness)
算法的有穷性是指算法必须能在执行有限个步骤之后终止;
确切性
(Definiteness)
算法的每一步骤必须有确切的定义;
输入项
(Input)
一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
输出项
(Output)
一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
可行性
(Effectiveness)
算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。

要素

一,数据对象的运算和操作:计算机可以执行的基本操作是以指令的形式描述的。一个计算机系统能执行的所有指令的集合,成为该计算机系统的指令系统。一个计算机的基本运算和操作有如下四类:[1]
1,算术运算:加减乘除等运算
2,逻辑运算:或、且、非等运算
3,关系运算:大于、小于、等于、不等于等运算
4,数据传输:输入、输出、赋值等运算[1]
二,算法的控制结构:一个算法的功能结构不仅取决于所选用的操作,而且还与各操作之间的执行顺序有关。
评定
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。
时间复杂度
算法的时间复杂度是指执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。
T(n)=Ο(f(n))
因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。
空间复杂度
算法的空间复杂度是指算法需要消耗的内存空间。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。
正确性
算法的正确性是评价一个算法优劣的最重要的标准。
可读性
算法的可读性是指一个算法可供人们阅读的容易程度。
健壮性

健壮性是指一个算法对不合理数据输入的反应能力和处理能力,也称为容错性。

我们经常会在算法的相关书籍上看到 “编程的灵魂:数据结构+算法”,”程序=数据结构+算法+程序设计语言”.
以上可以看出程序设计中数据结构和算法是最重要的,是编程的灵魂
数据结构是算法实现的基础,算法总是要依赖某种数据结构来实现的
往往是发展一种算法的时候,构建了适合于这种算法的数据结构。
一种数据结构如果脱离了算法,也就没有存在的价值了。
算法的作用:解决任何一个实际的问题,都不可避免地涉及到算法,例如存钱,节假日公司值班
排班等,都需要通过一定的算法,得到一个最优的方案
下面通过一个例子说明算法的重要:
看商品猜价格
首先出示一件价格在999元以内的商品,参与者要猜出这件商品的价格。主持人会根据参与着给出的
价格相应的给出高了或低了的提示。

下面通过代码来实现二分法猜商品价格

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{//oldprice商品价格 //price 我们猜的价格//i 次数int oldprice,price=0,i=0;printf("请设置商品价格:");scanf("%d",&oldprice);system("cls");//清屏printf("请输入试猜价格: \n");while(oldprice!=price){i++;printf("参与者:");scanf("%d",&price);printf("主持人:");if(price>oldprice){printf("高了\n");}else if(price<oldprice){printf("低了\n");}else{printf("恭喜您,答对了!!!!\n您一共试猜了%d次",i);}}
}

效果图

第一次写,希望能给大家带来帮助,也希望大佬能给予指导.

论算法的重要性与乐趣相关推荐

  1. 【强化学习笔记】4.3 无模型的强化学习方法-蒙特卡罗算法与重要性采样

    异策略与重要性采样 因为异策略中的行动策略和目标策略不一样,也就是说行动策略产生的数据分布与目标策略的数据分布存在偏差,即即行动策略的轨迹概率分布和改善策略的轨迹概率分布不一样,因此在使用数据进行目标 ...

  2. 不是吧,不是吧,这年头还有人不知道算法的重要性?我进字节年薪45w+全靠大佬这份笔记!

    前不久,GitHub 上出现了一个手把手带你刷 LeetCode 的项目.该项目此前在 GitHub 开源后,连续多次霸榜 GitHub Trending 首页,用了两个月 Star 数便破 50k, ...

  3. 这个大数据时代,算法的重要性你要意识到

    经典语段: 如果说 Java 是自动档轿车,C 就是手动档吉普.数据结构呢?是变速箱的工作原理. 你完全可以不知道变速箱怎样工作,就把自动档的车子从 A 开到 B,而且未必就比懂得的人慢. 写程序这件 ...

  4. 数据结构和算法的重要性

    1.什么是数据结构 数据结构是一种抽象的封装,计算机中的数据结构就是把一些基本的数据类型,融合成一些复杂的数据结构,入map.队列 2.数据结构的重要性 编程就是和数据打交道,计算机程序总是在接受数据 ...

  5. 数据结构与算法(Java版) | 数据结构与算法的重要性

    通过前几讲我给大家介绍的几个经典的算法面试题,相信大家现在应该对数据结构与算法有了一个很浓烈的学习兴趣,嘻嘻

  6. 算法应该怎么“玩”?

    特别提示 本课程为王晓华老师达人课课程,需要购买训练营课程的同学请点击下方链接: 28 天玩转算法-第02期 课程介绍 市面上关于算法的书可谓琳琅满目,有经典但难啃的.也有简单入门的.更有独辟蹊径的, ...

  7. 开篇词 | 算法是程序的“灵魂”

    大家好,我是王晓华,网名 orbit.2015 年出版了一本书,名为<算法的乐趣>,以"趣味性"为着手点,介绍了二十多个趣味算法的原理和实现,主要目的是希望读者了解到算 ...

  8. “算法不行,干啥都不行!”面试官:面试基本都会考这点!

    无论你是 Java,Python,还是 PHP,面试总逃脱不了一个问题:算法! 据统计,各大厂笔试平均通过率只有 10%~20%,基本都折在了算法上. 滴滴出行笔试通过率为 18.2%: 腾讯秋招笔试 ...

  9. 字节跳动面试官:你离50w年薪就差答对了这个算法题!

    我有个朋友,最近去头条面试,因为算法题没写出来,直接面挂了,搞得他非常郁闷. 众所周知,算法对程序员来说越来越重要了,但是总有人抱有一丝侥幸,不肯投入精力去学习,想着现在的工作中反正也用不到,等找工作 ...

最新文章

  1. RAC -代替OC 中的代理
  2. 中国电信天翼Live究竟胜算几何?
  3. HTML+CSS+JS实现 ❤️年年有鱼祝福背景特效❤️
  4. 什么是机器阅读理解?跟自然语言处理有什么关系?
  5. ASR开发工作笔记0001---Eclipse DS-5-报错Cannot checkout an uncounted license withini a Windows Terminal Servi
  6. 【caffe-windows】 caffe-master 之Matlab中model的分类应用
  7. #C语言#警告:隐式声明函数‘xxx’ [-Wimplicit-function-declaration]
  8. linux tcl expect 安装(转)
  9. matlab iir滤波器参数,[Matlab]IIR滤波器参数
  10. 用两个栈实现队列(Java)
  11. mysql基础教程下载_MySQL基础教程
  12. 腾讯优图api接口+Python SDK(1)
  13. 《指数基金投资指南》银行螺丝钉 ---读书
  14. C#Assembly详解
  15. CATIA V5 R19 WIN7 64位系统的安装方法
  16. Unix的学习(一)
  17. 网络规划设计师5天修炼-施游-专题视频课程
  18. 西方国家的饮食讲究简单、清淡、新鲜
  19. Unity 3D SplineMesh样条线工具扩展,链条制作,履带转动,绳子制作,调整弯曲度及一些好用的示例
  20. Multisim仿真—整流滤波电路(二)

热门文章

  1. ArcGIS官方帮助文档和教程整理
  2. 百度的链接打不开解决办法
  3. CSS学习笔记(十)对表单和数据表格使用样式
  4. ImageView组件的应用:图片浏览器
  5. (一)Google Earth Engine概述
  6. 聚苯乙烯微球为成孔模板制备多孔PI/HMSNs复合膜/交联氨基聚苯乙烯微球/羧基聚苯乙烯微球
  7. 计算机基础知识题精选
  8. 计算思维运用计算机的例子,计算思维案例及平时成绩讨论题资料.doc
  9. 计算机操作系统的发展过程
  10. linux文件夹改不了权限吗,linux修改文件和文件夹权限及所有者