[数据结构]绪论

数据结构:不是专门的数值计算,而是研究非数值计算的程序设计问题中,计算机的操作对象以及它们的相互关系等.

数据:是对自然的描述,客观事物的符号描述.是可以输入到计算机中一切符号的总称.它是一个集合,每一项为一个数据元素.

数据元素:是数据的基本单位,处理的基本单位,但不是最小单位.数据元素中可包含多个数据项.

数据项:不可再细分的数据单位.

数据对象:是性质相同的数据元素的集合.如:整数,实数

数据结构:是带结构的数据元素的集合.它包含的数据不是孤立的,而是彼此之间有联系.

这种联系就叫做是结构:集合,线性结构,树形结构,图状结构(网)

数据结构初定义为DataStucture=<D,S>:D是数据元素的集合,而S是这个集合上的关系.

S描述的关系是一个逻辑关系,表示数据间的联系,可是任何联系都要存储到计算机中,由机器进行操作,所以会对应一个存储关系,又叫做物理结构.

如:逻辑关系可是有序对来表示,<X,Y>,而物理关系可用二进制位来表示.

其中物理上的存储关系又会分为两种:顺序映像和非顺序映像.

1>以存储位置之间相差一个常量位置来表示两个数据之间的关系,经常是紧挨着存放-顺序的

2>不以位置来表示彼此之间的关系,那么必须用附加的信息来表示,如指针-非顺序的

数据类型:用来表示变量或是表达式的范畴和允许的操作.是一个值的集合,和这个集合上所允许的操作的总称.

数据类型可分为原子类型,即它的值是不可再分的.如INT,另一种是结构类型,由若干成分按某种结构组成,是可以分解的.

-------

抽象数据类型:ADT

1>抽象,强调本质特性,完成的功能和用户接口,2>封装,内部实现细节不对外公开.

ADT:<D,S,P>三元组,其中P是对D的基本操作.

操作的参数有两种:一种是值,一种是引用,用"&",它用来提供输入值外,还将返回操作结果.

如:

Status InitTriplet(Triplet &T,ElemType v1,ElemType v2,ElemType v3)//Triplet为一个指向ElemType的指针,形参是一个引用.

{//Status 类型是当函数返回值为函数结果状态代码

T=(ElemType *)malloc(3*sizeof(ElemType));

if(T==null) exit;

T[0]=v1;T[1]=v2;T[2]=v3;

return OK;

}

-------

算法与算法分析

算法的特征:

1>有穷性:对任意一组合法的输入,有限步后都会结束,指令长度有限,每个操作语句执行时间有限.

2>确定性:对相同的输入产生的结果相同.

3>可行性:每一个操作都是由基本操作组成.

4>输入:

5>输出:

算法的要求:

1>正确性:必须满足既定的目标.正确的不同级别.

2>可读性:为了阅读与交流.

3>健壮性:有异常处理,不会程序自动退出等其它意外情况.

4>高效率,低存储要求---主要是与问题的规模有关.

时间复杂度:O(f(n)),基本操作重复的次数

空间复杂度:S(n)=O(f(n)),它是程序本身所占的空间,输入数据所占的空间,辅助变量所占用的空间.

只考虑辅助变量.

补充两个排序算法:

快速排序,将剩下的最小值放到这些值的最开头.

void select_sort(int a[],int n)
{
 for(int i=0;i<n;i++)
 {
  int j=i;
  for(int k=i+1;k<n;k++)
  {
   if(a[k]<a[j])
   {j=k;}
   if(i!=j)
   {int temp=a[i];a[i]=a[j];a[j]=temp;}
  }
 }

}

冒泡排序,将值两两比较,最大的放到最下面.

void bubble_sort(int a[],int n)
{
 for(int i=n-1,bool change=true;i>=1&&change;i--)
 {
  change =false;
  for(int j=0;j<i;++j)
  {
   if(a[j]>a[j+1])
   {
    int temp=a[j];a[j]=a[j+1];a[j+1]=temp;

   }
  }
 }
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值