有理数排序
对于n个大于0的有理数(这n个数中可能有些数重复),请问用c语言如何编程:使这些有理数按从大到小的顺序排列(对于重复的有理数只算一次)。例如:输入 1/2 1/3 1/2 2/3 3/4 1/4 1/3 2/3 1/3 3/4
输出 3/4 2/3 1/2 1/3 1/4
我的想法:
方法一:先将这n个有理数按从大到小的顺序排列,再把重复的有理数给去掉。(以上面的例子为例)
步骤1、3/4 3/4 2/3 2/3 1/2 1/2 1/3 1/3 1/3 1/4
步骤2、3/4 2/3 1/2 1/3 1/4
方法二:先确定两端,再逐步确定中间。
先找出1/2 1/3 1/2 2/3 3/4 1/4 1/3 2/3 1/3 3/4中最大的数3/4与最小的数1/4,再从剩下的数中找出比3/4小,比1/4大的数,且是剩下这些数中最大的。按照这种方法,最后得出结果:3/4 2/3 1/2 1/3 1/4
请问,这两种方法可用C语言编程实现吗?如果可以的话,哪种比较方便,请把程序编出来;如果不可以的话,有其他方法吗?请编出相关C程序。