初识数据结构

简介: 初识数据结构

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

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

目录
相关文章
|
2月前
|
存储 NoSQL 索引
【数据结构】数据结构学什么?
【数据结构】数据结构学什么?
43 5
|
2月前
|
消息中间件 缓存 调度
常见的8种数据结构
常见的数据结构包括数组、链表、队列、栈、树、堆、哈希表和图。
66 4
|
存储 容器
|
7月前
|
算法 C++ 开发者
【C/C++ 数据结构 】 连通图的基本了解
【C/C++ 数据结构 】 连通图的基本了解
119 0
|
存储 算法 搜索推荐
【BaseArray 数据结构】
【BaseArray 数据结构】
|
存储 算法 C语言
数据结构成神篇1-初学数据结构
今天我们开始数据结构的学习,当然,这个有些概念是十分抽象的,只看文章是不一定能懂的,或者说会耗费不少的时间。所以我会持续在B站上面更新讲解视频,都是自己的一些理解和想法。会拿出来和大家一起分享,都是免费的。原创不易,希望大家可以三连支持一下,也希望能给大家带来进步。
105 0
数据结构成神篇1-初学数据结构
数据结构94-深入链地址法
数据结构94-深入链地址法
66 0
数据结构94-深入链地址法
|
存储 Java 索引
数据结构 01(上)
数据结构是计算机相关专业的基础课程,不管学什么编程语言,都要学习数据结构。接下来就一起来了解一下吧。
数据结构 01(上)
数据结构知识
数据结构知识
228 0