2.2 数列
数列是按照某种顺序排列的一组数,其在计算机科学中的应用非常广泛,如在程序设计[4]、数据结构[5]的学习、使用过程中,经常遇到线性结构中的数组、列表、字符串等结构,它们都可以理解成数列。
2.2.1 数列的概念
1.数列
定义2-17 按照一定顺序排列的一组数称为数列。
按照函数定义的方式,数列也可以理解成以正整数集合(或它的有限子集)为定义域的函数。
数列一般表示为,记作。如{1,2,3,4,…,n,…}{2,4,6,8,…,2n}{2,4,6,8,10,12,14,16,18,20}都是数列。
可以利用Python中的列表表示数列,假设需要表示由不超过自然数20的偶数构成的数列,可以通过如下定义完成:
或者
2.数列的相关概念
定义2-18 数列中的每个元素称为该数列的项。数列的第一个项称为首项。对于数列,为首项,为第项。
数列的通项公式:如果数列的第项与正整数的关系能用一个公式来表示,那么将这个公式称为数列的通项公式。
例2-5 数列{2,4,6,8,…,2n}的通项公式为,利用Python实现该数列的表示方法,假设n=10,则程序如下:
输出结果如下:
2.2.2 数列的分类
数列可以按照不同的方式进行划分。
1.按照数列的项数划分
(1)有穷数列:数列中的项是有限的,如{1,2,3,4,5,6,7,8,9,10}{2,4,6,8,…,2n}都是有穷数列。
(2)无穷数列:数列中的项是无限的,如{1,2,3,4,…,n,…}是无穷数列。
2.按照数列项之间的大小关系划分
(1)递增数列:从数列的第二项起,每项都大于其相邻的前一项,这样的数列称为递增数列,如{1,5,10,11,15,26,37,48,59,100}{2,4,6,8,…,2n}(n为正整数,n≥5)都是递增数列。
(2)递减数列:从数列的第二项起,每项都小于其相邻的前一项,这样的数列称为递减数列,如{100,59,48,37,26,15,11,10,5,1}{2n,2n-2,2n-4,…,8,6,4,2}(n为正整数,n≥5)都是递减数列。
(3)常数数列:数列的每项都是一个相同的数值,这样的数列称为常数数列,简称常数列。
3.按照数列项之间的变化规律划分
(1)等差数列:从数列的第二项起,每项与其相邻的前一项的差等于同一个常数,这样的数列称为等差数列。其中,后一项与前一项的差称为公差(用来表示),如{1,4,7,10,13,…,3n+1,…}(n=0,1,2,3,…),{2,4,6,8,…,2n}(n为正整数,n≥5)都是等差数列。
等差数列的通项公式:,其中,n为项数,为公差。
等差数列的前n项和公式:,其中,n为项数。
(2)等比数列:从数列的第二项起,每项与其相邻的前一项的比等于同一个常数,这样的数列称为等比数列。其中,后一项与前一项的比值称为公比(用来表示)。如{1,3,9,27,…3n,…}(n=0,1,2,3,…)是等比数列。
等比数列的通项公式:,其中,,为公比。
等比数列的前n项和公式:,其中,。
2.2.3 综合案例及应用
例2-6 利用Python程序实现对一个数列中的元素进行升序排序。
利用冒泡排序法对数列中的元素进行升序排序,对该算法的分析如下。
(1)通过Python创建一个列表,用来表示数列。
(2)利用循环嵌套进行升序排序,此过程主要是比较相邻元素,若前者比后者大,则两者调换位置。
(3)持续这个过程,直到最后一个元素为止。
(4)输出结果。
对上述算法步骤的程序实现如下:
输出结果如下: