选择排序法证明

来源:互联网 发布:翁达杰 知乎 编辑:程序博客网 时间:2024/04/30 05:33

选择排序法证明

 

问题重述:

n个数(n2a1, a2, …, an,从i = 1n - 1共经历n - 1次循环,对于每一次循环i,将ai+1,…,an依次和ai作比较。对于每一次比较(ai, aj) ,其中j = i + 1, …, n
aiajai, aj保持不变;
ai < aj,则ai, aj互换位置。
则最后这n个数将降序排列。

 

证明:

对于每一次“比较”操作。若ai ajai, aj保持不变,于是ai aj;若ai < aj,则ai, aj互换位置,于是ai > aj。因此经过一次“比较”操作后恒有ai aj。下面直接引用此结论。

 

对于每一次以下标i开始的循环,对j - i作数学归纳法。

进行了第j – i = 1次比较后,由上面结论知,ai aj。所以aiai, …, aj中最大的数。

假设当j – i = k 时“aiai, …, aj中最大的数”成立。则当j – i = k + 1时,

由上面结论知,ai aj,于是aj不超过ai--根据假设即ai, …, aj-1中最大的数。于是ai, …, aj-1中最大的数ai仍是ai, …, aj中最大的数。

由数学归纳法原理可知。aiai, …, 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于上海大学

 

 

原创粉丝点击