一、数据结构研究的是非数值计算程序问题中的操作对象以及它们之间的关系。从这句话,我可以得出两点,1.数据结构不是研究数值计算的,2.数据结构是研究操作对象以及它们之间的关系的。
二、数据就是程序中的操作对象,其特点是可以输入到计算机中并且可以被计算机程序处理。数据是一个抽象的概念,在程序中具体表现为某种程序设计语言的数据类型,如int、float、char等等。
三、数据元素:组成数据的基本单位,可理解为某种程序设计语言的基本数据类型或自定义的数据类型所声明的变量。
四、数据项:一个数据元素由诺干个数据项组成,可理解为结构体中的成员,也称为域。
五、数据对象:性质相同的数据元素的集合,可理解为一个数组。
struct _MyTeacher //一种数据类型
{
char name[32];
char tile[32];
int age;
char addr[128];
};
struct _MyTeacher t1; //数据元素
struct _MyTeacher Array[30]; //数据对象
memset(&t1, 0, sizeof(t1));
strcpy(t1.name, "name"); //数据项
strcpy(t1.addr, "addr"); //数据项
strcpy(t1.tile, "addr"); //数据项
六、数据元素之间不是独立的,存在特定的关系,数据结构研究的就是数据对象中数据元素之间的关系。
七、数据的逻辑结构:指数据元素之间的逻辑关系,就是从逻辑关系上描述数据,不考虑硬件上是如何实现的。数据的逻辑结构可细分为四类:集合、线性结构(一对一)、树形结构(一对多)、图状结构(多对多)。
八、数据的物理结构:指的是数据在硬件上的存储结构,可分为四类:顺序存储、链式存储、索引存储、散列存储。
九、数据的运算:插入、删除、修改、查找、排序
十、算法的概念:1.算法是特定问题求解步骤的描述。2.在计算机中表现为指令的有限序列。3.算法是独立存在的一种解决问题的方法和思想。4.算法最重要的是思想。
十一、算法和数据结构的联系:1.数据结构只是静态的描述数据之间的关系。2.高效的程序需要在数据结构上设计和选择算法。程序 = 数据结构 + 算法。
十二、算法的特性:输入、输出、有穷性、确定性、可行性。
十三、算法的执行效率的度量(时间复杂度):大O表示法(Operation)。CPU执行指令的时间是固定的,那么我们可以用执行完该算法需要几步,来表示该算法的时间复杂度。
十四、提高程序的执行效率要有空间换时间的概念,当执行该程序的中间结果量很大,那么需要考虑用空间来换取时间。
需求描述:
在一个由自然数1-1000中某些数字所组成的数组中,每个数字可能出现零次或者多次。设计一个算法,找出出现次数最多的数字。
void search(int a[], intlen)
{
int sp[1000] = {0};
int i = 0;
int max = 0;
for(i=0; i<len; i++)
{
int index = a[i] - 1;
sp[index]++;
}
for(i=0; i<1000; i++)
{
if( max <sp[i] )
{
max = sp[i];
}
}
for(i=0; i<1000; i++)
{
if( max == sp[i] )
{
printf("%d\n", i+1);
}
}
}