数据结构很重要!!
数据结构很重要!!
数据结构很重要!!
数据结构训练我们编程的思想和用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等独立存在
算法:
输入
输出
有穷性
确定性
可行性
算法与程序的区别?
程序可能不能自动结束
算法对于合理的数据有合理的数据
算法对于出界数据也有合理数据
算法对于压力数据也有合理的数据
可读性
健壮性
高性价比