首页 > 编程语言 >数据结构与算法入门

数据结构与算法入门

时间:2024-04-01 15:56:43浏览次数:24  
标签:入门 int 算法 程序设计 100 数据结构 计算机

数据结构与算法入门

1、 数据结构介绍

程序(Program)=数据结构(Data Structure)+算法(Algorithm)”
数据结构是计算机专业中一门综合性的基础课程,它是介于数学,计算机硬件和计算机软件的三者之间一门核心课程,同时,数据结构是设计数据库,程序,操作系统,游戏等等设计方面的重要基础,是绝大多数计算机专业考研的指定科目,也是大公司面试时常考科目,同时,也是大学的学课竞赛中必备知识,优秀的数据结构和算法,可见数据结构在计算机课程中的重要性。
计算机的算法与数据结构密切相关,算法无不依赖于数据结构,而数据结构也关系到算法的效率,直接决定了一个程序的好坏。

2、数据结构发展史

1968年美国唐•欧•克努特教授开创了数据结构的最初体系,他所著的《计算机程序设计技巧》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构语其操作的著作。我们一般认为本书开创了数据结构的系统概念。
70年代初,数据结构作为一门独立的课程开始进入大学课堂。
数据结构的发展经历三个阶段:无结构阶段,结构化阶段和面向对象阶段

无结构阶段
40~60年代见,计算机的主要应用还没有如此普及,当时计算机主要是正对科学计算,程序设计技术以机器语言和汇编语言为主,程序处理的是存粹的数值,数据之间的关系主要是以来数学公式或者数学模型,此时数据结构概念并没有明确形成。
结构化阶段
60~80年代,计算机开始广泛应用于非数值处理领域,数据表示成为程序设计的重要问题,人们认识到程序设计规范化的重要性,提出了程序结构模块化,并开始注意数据表示与操作的结构化。数据结构及抽象数据类型就是在这种情况下形成的,随着数据规模的加大,程序的设计越来越依附于数据结构的设计,此时数据结构开始广泛普及。
图灵奖获得者沃斯的一个著名公式:程序=数据结构+算法。
面向对象阶段
80年代初期到现在,随着计算机不断普及,计算机性能以及需求不断增加,面向对象的程序设计被逐步提出,在对象的世界中 ,程序设计中大大减少了重复设计的部分,数据结构在这个阶段逐渐变得丰富,大量的封装类出现,减少了程序设计者的负担,数据结构因此变得更加友好。

3、何为算法

如何使用计算机C语言编程计算1到100的和(1+2+3+……+100),相信大多数人会直接给出以下答案

#include <stdio.h>
int main() {
    int ans=0,i;
    for(i=1;i<=100;i++){
        ans+=i;
    }
    printf("%d",ans);
    return 0;
}

这几乎是计算机中最为简单的程序了,但是,这样去完成这个功能真的好么?
早在300年前的小学生高斯早就已经做完了,他利用等差数列求和的算法,轻易打败了同班同学。

#include <stdio.h>
int main() {
    int ans=(1+100)*100/2;
    printf("%d",ans);
    return 0;
}

相比第一份答案,我们进行了100次的运算,才得出我们想要的结果,而对于第二份答案,我们仅进行了1次运算就得到了想要的结果,而在实际中计算机的计算远远不止这点计算量,以此如果我们去计算1到1000000的和呢?使用了等差数列还是一步算好,而这就是算法的魅力。

标签:入门,int,算法,程序设计,100,数据结构,计算机
From: https://www.cnblogs.com/zx-demo/p/18108620

相关文章

  • DIY 3 种分库分表分片算法,自己写的轮子才吊!
    大家好,我是小富~前言本文是《ShardingSphere5.x分库分表原理与实战》系列的第六篇,书接上文实现三种自定义分片算法。通过自定义算法,可以根据特定业务需求定制分片策略,以满足不同场景下的性能、扩展性或数据处理需求。同时,可以优化分片算法以提升系统性能,规避数据倾斜等问题。在......
  • 代码随想录算法训练营第二十五天(回溯2)|216. 组合总和 III、17. 电话号码的字母组合(JA
    文章目录216.组合总和III解题思路源码17.电话号码的字母组合解题思路源码216.组合总和III找出所有相加之和为n的k个数的组合,且满足下列条件:只使用数字1到9每个数字最多使用一次返回所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可......
  • 代码随想录算法训练营第二十七天(回溯3)|39. 组合总和、40. 组合总和 II、131. 分割回文
    文章目录39.组合总和解题思路源码40.组合总和II解题思路源码131.分割回文串解题思路源码39.组合总和给你一个无重复元素的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的所有不同组合,并以列表形式返回......
  • php采用aes算法,字符编码utf8,填充模式ECB,填充:ZeroPadding,编码:base64,实现加密
    原文:https://blog.csdn.net/yinxinyue0621/article/details/129813334一、php:三种填充模式的区别(PKCS7Padding/PKCS5Padding/ZeroPadding)(一)常见的三种填充方式:我们知道某些加密算法要求明文需要按一定长度对齐,叫做块大小(BlockSize),比如16字节,那么对于一段任意的数据,加密前需要......
  • [转]windows:批处理bat入门
    原文地址:windows:批处理bat入门_windowsbat-CSDN博客什么是BAT全称即Batch,批处理,是一类可执行的文本文件,扩展名为.bat。常用命令与语法help与/?都可以用来查看某个指令的帮助文档。语法格式:指令/?或者是help指令如title/?,就是打印title这个指令的帮助文档。需要注意,单独......
  • 搜索算法练习——拼图问题
    拼图问题是一个经典的搜索问题,其中目标是将一个拼图板恢复到初始状态,或者找到一个初始状态到目标状态的最短路径。我们可以使用广度优先搜索(BFS)来解决这个问题,将每个状态作为节点,并尝试所有可能的移动。fromcollectionsimportdequedefswap(board,i,j,ni,nj):......
  • 一文搞定opencv中常见的关键点检测算法(附代码)
    作者:K.Fire|来源:计算机视觉工坊前言角点时图像中存在物体边缘角落位置的点或者一些特殊位置的点,角点检测(CornerDetection)是计算机视觉系统中获取图像特征的一种方法,是运动检测、图像匹配、视频跟踪、三维重建和目标识别的基础。本篇文章将介绍opencv中常用的几种角点检......
  • FFTW 最快的FFT 快速傅里叶算法实现
    FFTW isaCsubroutinelibraryforcomputingthediscreteFouriertransform(DFT)inoneormoredimensions,ofarbitraryinputsize,andofbothrealandcomplexdata(aswellasofeven/odddata,i.e.thediscretecosine/sinetransformsorDCT/DST).We......
  • 【Servlet】Servlet入门
    文章目录一、介绍二、入门案例导入servlet-api的解决办法一、介绍概念:serverapplet,即:运行在服务器端的小程序Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。将来我们定义一个类,实现Servlet接口,复写方法,tomcat就可以识别这个类,我们就称它为一......
  • 【数据结构】一元多项式的表示与相加(无序输入 有序输出)
    一元多项式的表示与运算——课程设计(无序输入有序输出)目录一元多项式的表示与运算——课程设计(无序输入有序输出)一.例题:(输入无序,指数升序排列的一元多项式)1.链表结点定义2.创建单链表存放一元多项式(将无序的输入有序存放于链表)3.输出一元多项式4.一元多项式求值......