数据结构与算法-内行看门道

数据结构很重要!!
数据结构很重要!!
数据结构很重要!!

数据结构训练我们编程的思想和用C语言实现
学习曲线陡峭!

1.进阶高手的大门

看懂程序不一定能写出好的程序

程序的本质是什么?
程序是解决问题的步骤描述

我们只是学习的C的语法,并没有遇到实际问题。

例子:计算前N项的和

#include <stdio.h>
#include <malloc.h>

long sum1(int n)
{
    long ret = 0;
    int* array = (int*)malloc(n * sizeof(int));
    int i = 0;

    for(i=0; i<n; i++)
    {
        array[i] = i + 1;
    }

    for(i=0; i<n; i++)
    {
        ret += array[i];
    }

    free(array);

    return ret;
}
//先储存数组,在读取累加
long sum2(int n)
{
    long ret = 0;
    int i = 0;

    for(i=1; i<=n; i++)
    {
        ret += i;
    }

    return ret;
}
//思路一样
long sum3(int n)
{
    long ret = 0;

    if( n > 0 )
    {
        ret = (1 + n) * n / 2;
    }

    return ret;
}
//用的公式,没有循环---之前写C语言没有想到用
int main()
{
    printf("%d\n", sum1(100));
    printf("%d\n", sum2(100));
    printf("%d\n", sum3(100));

    return 0;
}

评鉴:程序编写应该用尽量小的空间
用尽量少的步骤来解决
优秀的开发者需要追求代码的高“性价比”!

Q:如何判断程序的好坏?
先评鉴一个程序的好坏,才有写好程序的基础。

总结:
程序是解决实际问题而写的步骤
要学会评鉴一个程序


2.数据的艺术

早期的计算机是为了数值计算
现在是为了解决生活问题
计算机要描述生活中的个体关系
数据结构就是用来解决非数值计算的
数据指的是程序的操作对象,用于描述客观事物

数据的特点:
可以输入到计算机
可以被计算机所处理
对数据进行分类所以叫做数据类型

数据对象:性质相同的数据元素的集合
数据元素:数据的基本单位
数据项:一个数据元素有若干数据项组成

数据元素之间存在特定的关系,这些关系就是数据结构

数据结构是指数据对象中数据元素之间的关系

逻辑结构:
集合结构
线性结构
树形结构
图形结构

物理结构:
顺序存储结构
链式存储结构


3.程序的灵魂–算法

数据结构与算法的关系?

高效的程序 = 恰当的数据结构 +合适算法

算法是一种思想,是特定问题的求解问题的描述,语言并不重要

数据结构只是描述的数据元素之间的关系,而算法就例如PID,GA等独立存在

算法:
输入
输出
有穷性
确定性
可行性
算法与程序的区别?
程序可能不能自动结束

算法对于合理的数据有合理的数据
算法对于出界数据也有合理数据
算法对于压力数据也有合理的数据

可读性
健壮性
高性价比

4.审判程序的灵魂

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值