初识数据结构

简介: 初识数据结构

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

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

目录
相关文章
|
6月前
|
存储 C++
c++数据结构
c++数据结构
47 0
|
5月前
|
存储 算法 调度
|
6月前
|
存储 算法 C#
C#编程与数据结构的结合
【4月更文挑战第21天】本文探讨了C#如何结合数据结构以构建高效软件,强调数据结构在C#中的重要性。C#作为面向对象的编程语言,提供内置数据结构如List、Array和Dictionary,同时也支持自定义数据结构。文章列举了C#实现数组、链表、栈、队列等基础数据结构的示例,并讨论了它们在排序、图算法和数据库访问等场景的应用。掌握C#数据结构有助于编写高性能、可维护的代码。
56 3
|
存储 算法 数据库
【数据结构】初识(上)
【数据结构】初识(上)
72 0
|
6月前
|
NoSQL 容器 消息中间件
数据结构 2.3.7
数据结构 2.3.7
|
存储 算法 容器
数据结构 > 什么是数据结构?
数据结构 > 什么是数据结构?
|
11月前
数据结构 2.2 单循环链表
数据结构 2.2 单循环链表
55 0
|
算法 Python
02 数据结构
02 数据结构
35 0
|
存储 算法
【数据结构】这堆是什么
【数据结构】这堆是什么
|
存储 机器学习/深度学习 人工智能
对数据结构的初步认识
对数据结构的初步认识
124 0