初识数据结构

简介: 初识数据结构

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

正如封清扬所言:数据结构是一门费脑子的课,你若遇到困惑不解的地方,都是正常的,就像你乘飞机去旅行,在飞机场晚点几个钟头,上了飞机又颠簸恐慌一样,别大惊小怪,都很平常,只要能安全到达就是成功。
示例: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的差距。算法好坏显而易见。

目录
相关文章
|
3月前
|
消息中间件 缓存 调度
常见的八种数据结构
常见的数据结构包括数组、链表、队列、栈、树、堆、哈希表和图,每种数据结构都有其特点
61 3
|
6月前
|
算法 C++ 开发者
【C/C++ 数据结构 】 连通图的基本了解
【C/C++ 数据结构 】 连通图的基本了解
89 0
|
存储 容器
|
6月前
|
存储 算法 索引
数据结构每日回顾
数据结构每日回顾
37 1
|
6月前
|
存储 算法
数据结构
数据结构
47 2
|
存储 算法 容器
数据结构 > 什么是数据结构?
数据结构 > 什么是数据结构?
|
算法 Python
02 数据结构
02 数据结构
35 0
|
存储 Java C++
总结数据结构-1
总结数据结构-1
41 0
|
存储 索引
【数据结构】树塔
【数据结构】树塔
153 0
数据结构4-什么是数据结构2
数据结构4-什么是数据结构2
61 0
数据结构4-什么是数据结构2