zoukankan      html  css  js  c++  java
  • 读世界是数字的(4)

    关于软件

    能让计算机完成各种任务的指令序列通称软件

    关于算法

    算法的关键属性是效率,即对于给定的数据量,它的处理速度怎么样?花费的时间大概是多少?书上介绍了以下3种算法:

    • 线性算法

    即计算时间与数据量成正比,当对某些数据的基本操作是相同的,那么工作量(计算时间)会与数据量同比例增加

    • 二分法

    对于线性算法的改进,如果在最开始数据是按照一定的规则排列的,那么就可以大大节省时间。

    例如若有1000个数据,那么为了找到其中任何一个大概找10次左右(因为2的10次方等于1024;若有2000个数据(比1000翻了一倍),大概找11次左右(因为2的11次方的2048);若有1,000,000个数据,则大概找20次;

    好处很显然,数据量的大幅增长只会带来工作量的微小增长。

    2的幂次方 10的幂次方
    2的10次方=1024 10的3次方=1000
    2的20次方=1,048,576 10的6次方=1,000,000
    2的30次方=1,073,741,824 10的9次方=1,000,000,000
    2的40次方=1,099,511,627,776 10的12次方=1,000,000,000,000
    2的50次方=1,125,899,906,842,624 10的15次方=1,000,000,000,000,000
    • 排序

    选择排序:每个数据都去与未和自己比较的数据进行比较,共需要N(N+1)/2,但是由这个式子可以发现工作量的增长比数据量的增长要快得多(特别是当数据很大时)

    快速排序:由二分法可以知道,任意一个数值被找到需要logN次(以2为底数),所以对于N个数据而言,就需要NlogN次。虽然当N很大时,这个数也不小,但是相比于选择排序而言就好很多了。

    关于编程与编程语言

    • 汇编语言

    与具体的计算机有关,对于不同的处理器,就算执行同一件事,但是写出来的语句也是不同的,这是很麻烦的。

    • 高级语言


    从上图可明显得知,尽管编译的结果并不相同,但是对于程序员而言写的句子是一样的(例如就是Z=X+Y)

  • 相关阅读:
    java多线程编程(一基础概念)
    【转】android程序编译过程
    【转】什么是线程安全和线程不安全
    【转】计算机中时间的表示和存储
    【转】字符编码
    C/C++程序编译流程
    NDK学习笔记-JNI的异常处理与缓存策略
    NDK学习笔记-JNI数据类型和属性方法的访问
    NDK学习笔记-JNI数据类型和属性方法的访问
    NDK学习笔记-JNI开发流程
  • 原文地址:https://www.cnblogs.com/rafell/p/6195234.html
Copyright © 2011-2022 走看看