程序员面试题精选100题(41)-把数组排成最小的数(算法)

面试题 时间:2019-09-22 手机网站

上述代码中,我们在函数compare中定义比较规则,并根据该规则用库函数qsort排序。最后把排好序的数组输出,就得到了根据数组排成的最小的数字。

找到一个算法解决这个问题,不是一件容易的事情。但更困难的是我们需要证明这个算法是正确的。接下来我们来试着证明。

首先我们需要证明之前定义的比较两个数字大小的规则是有效的。一个有效的比较需要三个条件:1.自反性,即a等于a2.对称性,即如果a大于b,则b小于a3.传递性,即如果a小于bb小于c,则a小于c。现在分别予以证明。

1.      

自反性。显然有aa=aa,所以a=a

2.       对称性。如果a小于b,则ab<ba,所以ba>ab。因此b大于a

3.       传递性。如果a小于