初识数据结构

简介: 初识数据结构

一、什么是数据结构和算法?

正如封清扬所言:数据结构是一门费脑子的课,你若遇到困惑不解的地方,都是正常的,就像你乘飞机去旅行,在飞机场晚点几个钟头,上了飞机又颠簸恐慌一样,别大惊小怪,都很平常,只要能安全到达就是成功。
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

1. 数据结构的起源

早期的计算机可以简单理解为数值计算的工具,就是用来计算的。可现实中,我们更多的不是解决数值计算的问题,而是需要一些更科学有效的手段(比如表、树、图等数据结构)的帮助,才能更好的去处理问题。
数据结构: 是相互之间存在一种或多种特定关系的数据元素的集合.
也就有了后面我们所说的,==程序设计 = 数据结构 + 算法==

2. 算法是什么?

现在我们写一下1 + 2 + 3 + .... + 100,大多数人都会写下以下的代码:

public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            sum += i;
        }
        System.out.println(sum);
    }

在这里插入图片描述

小学时候的高斯在老师出这道题时,很快就得到了答案:5050,老师特别吃惊,问道为何能如此快得到答案?
高斯解释道:
在这里插入图片描述

public static void main(String[] args) {
        int sum = 0;
        int n = 100;
        sum = (1 + n) * n / 2;
        System.out.println(sum);
    }

同一问题,两种不同的解法,当数据量上升后,差异还是很明显的。
算法:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指定表示一个或多个操作。

二、算法效率的度量方法

  1. 事后统计法:这种方法主要是通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序运行时间进行比较,从而确定算法效率的高低。
  2. 事前分析估算法: 在计算机程序编制之前,依据统计方法对算法进行估算。

一个程序的运行时间,依赖于算法的好坏和问题的输入规模,所谓问题的输入规模就是指输入量的多少
第一种算法:

public static void main(String[] args) {
        int sum = 0;                     //1次
        for (int i = 1; i <= 100; i++) { //n+1次
            sum += i;                    //n次
        }
        System.out.println(sum);         //1次  
    }

第二种算法:

public static void main(String[] args) {
        int sum = 0, n = 100;   //1次
        sum = (1 + n) * n / 2;  //1次
        System.out.println(sum); //1次
    }

显然,第一种算法执行了1+(n+1)+n+1次 = 2n+3次;第二种算法 1+1+1 = 3次,其实第一条和最后一条两个算法是一样的,我们只关注循环那部分,两个算法其实是n 和 1的差距。算法好坏显而易见。

目录
相关文章
|
7月前
|
存储 机器学习/深度学习 算法
进入数据结构的世界
进入数据结构的世界
|
2天前
|
C++
数据结构(循环单链表
数据结构(循环单链表
7 2
|
9月前
|
存储 算法 数据库
【数据结构】初识(上)
【数据结构】初识(上)
50 0
|
4月前
|
算法
数据结构22
数据结构22
12 0
|
9月前
|
存储 算法
【数据结构】这堆是什么
【数据结构】这堆是什么
|
11月前
|
存储 机器学习/深度学习 人工智能
对数据结构的初步认识
对数据结构的初步认识
114 0
|
存储 算法 安全
【数据结构】C#实现常用数据结构总结
自行整理的C#常见数据结构笔记。
323 0
【数据结构】C#实现常用数据结构总结
|
存储 算法 JavaScript
数据结构到底是什么?
“数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。” ——《数据结构、算法与应用》
192 0
数据结构到底是什么?
|
算法 索引
数据结构 静态查找
数据结构 静态查找
203 0
数据结构 静态查找
uiu
|
存储 机器学习/深度学习 算法
我对八种常见数据结构的理解(一)
我对八种常见数据结构的理解(一)
uiu
105 0
我对八种常见数据结构的理解(一)