问题: 排序
任取5个数,求证:至少通过7次比较可把原数列变成有序数列
比较的同时可进行交换,如比较3和4的大小后交换3和4算一次比较
证明时请给出算法
解答:
设A={a1,a2,a3,a4,a5}
1.
第1,2次分别比较a1和a2,a3和a4
后可假设
a1<a2,a3<a4
2.
第3次比较a2和a4,
分别有
ⅰ.
a1<a2<a4,a3<a4.
ⅱ.
a3<a4<a2,a1<a2
两种相似的情况.
所以只需研究
ⅰ.a1<a2<a4,a3<a4就可以了.
4.设前3次已知:a1<a2<a4,a3<a4
第4次比较a2和a5,
分别有
ⅰ.
a2<a5.
ⅱ.
a2>a5
两种情况.
5.
若是4.的ⅰ.的情况,
即a1<a2<a4,a3<a4,a2<a5.
第5次比较a4和a5后,有
ⅰ.
a1<a2<a4<a5,a3<a4.
ⅱ.
a1<a2<a5<a4,a3<a4.
((1)) 若是ⅰ.
a1<a2<a4<a5,a3<a4.
第6,7次比较a3和a2,a1后,就可把原数列变成有序数列.
((2)) 若是ⅱ.
a1<a2<a5<a4,a3<a4.
第6次比较a3和a2后,
再根据情况,第7次比较a3和a1或a5后,
就可把原数列变成有序数列.
5.
若是4.的ⅱ.
a2>a5的情况,
即a1<a2<a4,a3<a4,a5<a2.
第5次比较a1和a5后,有
分别有
ⅰ.
a1<a5<a2<a4,a3<a4.
ⅱ.
a5<a1<a2<a4,a3<a4
两种相似的情况.
所以只需研究
ⅰ.a1<a5<a2<a4,a3<a4就可以了.
6.
设前5次已知:a1<a5<a2<a4,a3<a4.
第6次比较a3和a5后,
再根据情况,第7次比较a3和a1或a2后,
就可把原数列变成有序数列.
所以只需通过7次比较可把原数列变成有序数列.
版权及免责声明
1、欢迎转载本网原创文章,转载敬请注明出处:侨谊留学(www.goesnet.org);
2、本网转载媒体稿件旨在传播更多有益信息,并不代表同意该观点,本网不承担稿件侵权行为的连带责任;
3、在本网博客/论坛发表言论者,文责自负。