选择排序法证明
问题重述:
有n个数(n≥2)a1, a2, …, an,从i = 1到n - 1共经历n - 1次循环,对于每一次循环i,将ai+1,…,an依次和ai作比较。对于每一次比较(ai, aj) ,其中j = i + 1, …, n,
若ai≥aj,ai, aj保持不变;
若ai < aj,则ai, aj互换位置。
则最后这n个数将降序排列。
证明:
对于每一次“比较”操作。若ai ≥ aj,ai, aj保持不变,于是ai ≥ aj;若ai < aj,则ai, aj互换位置,于是ai > aj。因此经过一次“比较”操作后恒有ai≥ aj。下面直接引用此结论。
对于每一次以下标i开始的循环,对j - i作数学归纳法。
进行了第j – i = 1次比较后,由上面结论知,ai≥ aj。所以ai是ai, …, aj中最大的数。
假设当j – i = k 时“ai是ai, …, aj中最大的数”成立。则当j – i = k + 1时,
由上面结论知,ai≥ aj,于是aj不超过ai--根据假设即ai, …, aj-1中最大的数。于是ai, …, aj-1中最大的数ai仍是ai, …, aj中最大的数。
由数学归纳法原理可知。ai是ai, …, an中最大的数。
完成排序后,由刚才对i的讨论的任意性可知a1 = max(a1, …, an), a2 = max(a2, …, an), …, an-1 = max(an-1, an)。
因为max(a1, …, an) ≥ max(a2, …, an) ≥ ... ≥ max(an-1, an),≥ an
所以a1≥ a2≥ ... ≥ an。
证毕。#
---------------------
紫数 2009-06-25于上海大学