数据结构
定义:数据结构(data structure)是带有结构特性的数据元素的集合。数据结构包括数据的逻辑结构、数据的(存储)物理结构和数据的运算三个部分。

基本数据单位:数据结构中最基本的5个概念: 数据,数据元素,数据项,数据对象,数据结构;其中数据项是数据元素的最小单位。

//
// main.c
// 001--数据结构基本术语
//
// Created by CC老师 on 2019/8/12.
// Copyright © 2019年 CC老师. All rights reserved.
//
/*
数据: 程序的操作对象,用于描述客观事物.
数据的特点: 1️⃣ 可以输入到计算机 2️⃣ 可以被计算机处理
数据项: 一个数据元素由若干数据项组成
数据元素: 组成数据的对象的基本单位
数据对象: 性质相同的数据元素的集合(类似于数组)
结构: 数据元素之间不是独立的,存在特定的关系.这些关系即是结构;
数据结构:指的数据对象中的数据元素之间的关系
*/
#include <stdio.h>
//声明一个结构体类型
struct Teacher{ //一种数据结构
char *name; //数据项--名字
char *title; //数据项--职称
int age; //数据项--年龄
};
int main(int argc, const char * argv[]) {
struct Teacher t1; //数据元素;
struct Teacher tArray[10]; //数据对象;
t1.age = 18; //数据项
t1.name = "CC"; //数据项
t1.title = "讲师"; //数据项
printf("老师姓名:%s\n",t1.name);
printf("老师年龄:%d\n",t1.age);
printf("老师职称:%s\n",t1.title);
return 0;
}
逻辑结构与物理结构:根据视角不同,我们将数据结构分为2种: 逻辑结构与物理结构
1、数据的逻辑结构:逻辑结构(logical structure)是指在数据中数据元素之间的相互关系。数据元素之间存在不同的逻辑关系构成了以下4种结构类型。
1)集合结构:集合的数据元素没有其他关系,仅仅是因为他们挤在一个被称作“集合”的盒子里。

(2)线性结构:线性的数据元素结构关系是一对一的,并且是一种先后的次序,就像a-b-c-d-e-f-g·····被一根线穿连起来。

(3)树形结构:树形的数据元素结构关系是一对多的,这就像公司的部门级别,董事长-CEO\CTO-技术部\人事部\市场部.....。

(4)图结构:图的数据元素结构关系是多对多的。就是我们常见的各大城市的铁路图,一个城市有很多线路连接不同城市。

2、数据的物理理结构:
物理结构(physical structure)也称为存储结构(storage structure),指的是数据的逻辑结构在计算机中的存储形式。数据的存储结构一般可以反映数据元素之间的逻辑关系。分为顺序存储结构和链式存储结构。
(1)顺序存储结构:是把数据元素存放在一组存储地址连续的存储单元里,其数据元素间的逻辑关系和物理关系是一致的。

这样的存储方式,实际非常简单. 可以理解为排队占位. 按照顺序,每个一段空间. 我们所学习且使用的数组就是典型顺序存储结构. 当你在计算机建立一个有6个整型数据的数组时,计算机便在内存中找到一片空地.按照一个整型所占空间大小乘以6.开辟一段连续的内存空间. 然后将数据依顺序放在位置上,依次排放.
(2)链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的,数据元素的存储关系并不能反映其逻辑关系,因此需要借助指针来表示数据元素之间的逻辑关系。

小结:逻辑结构是面向问题的,而物理结构就是面向计算机的. 其基本的目标就是将数据以及逻辑关系存储到计算机的内存中.
程序设计中常用的数据结构有:数组(array),栈(stack),队列(queue),链表(list),树( tree),图(graph),堆(heap),散列(hash)
算法
定义:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。
数据结构与算法关系:

程序设计 = 数据结构 + 算法
算法的特性
算法必须具备几个基本特性: 输入,输出,有穷性,确定性和可行性;
算法设计要求
正确性,可读性,健壮性,时间效率高和存储量低
推导大O阶方法
1、用常数1取代运行时间中所有加法常数;
2、在修改后的运行次数函数中,只保留最高阶项;
3、如果在最高阶项存在且不是1,则去除与这个项相乘的常数;

算法的空间复杂度通过计算算法所需的存储空间实现,算法空间复杂度的计算公式记做: S(n) = n(f(n)),其中,n为问题的规模,f(n)为语句关于n所占存储空间的函数.
参考
数据结构与算法——从零开始学习(一)基础概念篇
数据结构与算法之美(基础)
网友评论