学习背景
1976年瑞士计算机科学家Niklaus Wirth曾提出一个著名公式:Algorithm+Data Structures=Programs(算法+数据结构=程序),并以此为书名写了一本书。他本人也于1984 年获得了图灵奖,是瑞士学者中唯一获此殊荣的人。
数据结构基本认识
数据结构是计算机组织数据和存储数据的方式。更进一步地说,数据结构是指一组相互之间存在一种或多种特定关系的数据的组织方式和它们在计算机内的存储方式,以及定义在该组数据上的一组操作。合理的数据结构可降低程序设计的复杂性,提高程序执行的效率。关系图:
数据:所有被计算机存储、处理的对象。如字符串、图像、声音等。
数据元素:数据的基本单元,在程序中作为一个整体而加以考虑和处理。
数据项:被称为字段或者域,是数据的不可分割的最小标识单位。
数据、数据元素和数据项实际上反映了数据组织的三个层次,数据可由若干个数据元素组成,而数据元素又可由若干个数据项组成。
解决问题
计算机解决一个具体的问题时,一般需要经过以下几个步骤:
(1)从具体的问题抽象出一个适当的数学模型。
(2)设计一个求解该数学模型的算法。
(3)用某种计算机语言编写实现该算法的程序,调试和运行程序直至最终得到问题的解答。
在每个步骤中,数据的表现形式都不相同,实际问题中的数据称为原始数据。在数学模型中,需要把原始数据按照某种方式组织起来,以便很好的体现数据之间的关系,数据及数据的组织方式称为数据的逻辑结构。为了能用计算机加工处理,逻辑结构还必须转换为能被计算机存储的存储结构。计算机解决问题的步骤如图1-1所示:
举个栗子
实际问题:我们要将十个数从小到大排序,这十个数为:3,7,4,2,9,0,1,5,6,8。
原始数据:3,7,4,2,9,0,1,5,6,8
处理要求:从小到大重新排序
数学模型:对于一组数据,我们可以用数组的形式将其组织起来,通过排序算法对数组中的值进行从小到大排序。
逻辑结构:数组
算法:冒泡排序
计算机程序实现:数组采用顺序存储结构来存储数据元素。
存储结构:顺序存储
程序语句序列:
int i,j,k,temp;
int[] a = { 3,7,4,2,9,0,1,5,6,8 };
for (i = 0; i < 10; i++)
{
for (j = 0; j < 9 - i; j++)
{
if (a[j] > a[j + 1])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (int k = 0; k < 10; k++)
{
lblBubble.Text += a[k].ToString() + ",";
}
小结
一种数据结构包括三方面的内容,即逻辑结构、对数据的操作(基本运算的集合)以及数据的存储结构。线性表、栈和队列中的元素具有相同的逻辑结构(即线性结构),但有不同的运算集,它们是不同的数据结构。(以上内容,如有不当之处,敬请斧正。)