首页 > 其他 > 详细

数据结构--数据结构及数组

时间:2014-03-11 21:47:55      阅读:520      评论:0      收藏:0      [点我收藏+]

数据结构

http://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84

计算机科学信息科学中,数据结构英语data structure)是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率算法

在许多类型的程序设计中,选择适当的数据结构是一个主要的考虑因素。许多大型系统的构造经验表明,封装的困难程度与最终成果的质量与表现,都取决于是否选择了最优的数据结构。在许多时候,确定了数据结构后便能很容易地得到算法。而有些时候,思路则会颠倒过来:例如当某个关键作业需要特定数据结构下的算法时,会反过来确定其所使用的数据结构。然而,不管是哪种情况,数据结构的选择都是至关重要的。

系统构造的关键因素是数据结构而非算法的这一深入理解,导致了多种形式化的设计方法与编程语言的出现。绝大多数的语言都带有某种程度上的模块化思想,通过将数据结构的具体实现封装隐藏于受限接口之后的方法,来让不同的应用程序能够安全地重用这些数据结构。C++JavaPython面向对象的编程语言可使用来完成这一功能。

因为数据结构的重要性毋庸置疑,现代编程语言及其运行环境在标准库中都包含了多种数据结构,例如 C++ 标准模板库中的容器、Java集合框架以及微软的.NET Framework

大多数数据结构都由数列记录可辨识联合引用等基本类型构成。举例而言,可空引用(nullable reference,一种可被置空的引用)是引用与可辨识联合的结合体,而最简单的链式结构链表则是由记录与可空引用构成。

数据结构意味着接口封装:一个数据结构可被视为两个函数之间的接口,或者是由数据类型联合组成的存储内容的访问方法封装。

常见的数据结构

数组

http://zh.wikipedia.org/wiki/%E9%99%A3%E5%88%97

数组是计算机编程语言上,对于“Array”的中文称呼。它十分类似数学上的“矩阵

数学上的矩阵看起来像这样:

bubuko.com,布布扣

而计算机上的数组看起来像这样,例如C语言中的数组:

    int a[3][3]={ 
                    { 3,  6,  2 },
                    { 0,  1, -4 },
                    { 2, -1,  0 }
                 };

虽然数组在各种计算机编程语言中的表示式略有不同,但是几乎每一种编程语言都有这种结构和观念,它已经不只是一种编程专用的术语,而是计算机运作中非常重要的技术和概念。

字符串也是基于数组的一种重要数据结构。数据库也是数组概念的一种扩充和延伸。

多维数组

普通数组采用一个整数来作下标。多维数组的概念特别是在数值计算和图形应用方面非常有用。我们在多维数组之中采用一系列有序的整数来标注,如在[ 3,1,5 ] 。这种整数列表之中整数的个数始终相同,且被称为数组的“维度”。关于每个数组维度的边界称为“维”。维度为k的数组通常被称为k维。

程序设计

数组设计之初是在形式上依赖内存分配而成的,所以必须在使用前预先请求空间。这使得数组有以下特性:

  1. 请求空间以后大小固定,不能再改变(数据溢出问题);
  2. 在内存中有空间连续性的表现,中间不会存在其他程序需要调用的数据,为此数组的专用内存空间;
  3. 在旧式编程语言中(如有中阶语言之称的C),程序不会对数组的操作做下界判断,也就有潜在的越界操作的风险(比如会把数据写在运行中程序需要调用的核心部份的内存上)。

因为简单数组强烈倚赖计算机硬件之内存,所以不适用于现代的程序设计。欲使用可变大小、硬件无关性的数据类型,Java等程序设计语言均提供了更高级的数据结构:ArrayListVector动态数组

数据结构--数据结构及数组,布布扣,bubuko.com

数据结构--数据结构及数组

原文:http://www.cnblogs.com/wangziqiang/p/3593378.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!