主题:如何用fortran实现如下的排序算法
原数据是这样的:
0.2000E-01 0.2000E-02
0.4000E-01 0.2000E-02
0.6000E-01 0.2000E-02
0.8000E-01 0.1000E-01
0.1000E+00 0.3000E-02
0.1200E+00 0.2000E-02
0.1400E+00 0.4000E-02
0.2000E-01 0.3000E-02
0.4000E-01 0.3000E-02
0.6000E-01 0.2000E-02
0.8000E-01 0.1000E-01
0.1000E+00 0.2000E-02
0.1200E+00 0.2000E-02
0.1200E+00 0.2000E-02
0.1400E+00 0.5000E-02
0.2000E-01 0.2000E-02
0.4000E-01 0.5000E-02
0.1400E+00 0.4000E-02
0.1600E+00 0.2000E-01
0.4000E-01 0.6000E-02
其中有重复的,我想排序后实现如下的输出格式:
0.2000E-01 0.2000E-02 0.3000E-02
0.4000E-01 0.2000E-02 0.3000E-02 0.5000E-02 0.6000E-02
0.6000E-01 0.2000E-02
0.8000E-01 0.1000E-01
0.1000E+00 0.2000E-02 0.3000E-02
0.1200E+00 0.2000E-02
0.1400E+00 0.4000E-02 0.5000E-02
0.1600E+00 0.2000E-01
即:重复的行保留一个,第一列按从小到大排列,第一列中相同的值,所对应的第二列的值,按从小到大一次排列到它后面。比如,与第一列的0.2000E-01对应的有三个值, 0.2000E-02, 0.3000E-02,0.2000E-02,删除一个重复的,另外两个按顺序排到 0.2000E-01的后面,如输出后的第一行所示,其余类推。
看起来觉得不难,结果俺弄了半天,总是出错,有哪位高手帮俺实现下。
0.2000E-01 0.2000E-02
0.4000E-01 0.2000E-02
0.6000E-01 0.2000E-02
0.8000E-01 0.1000E-01
0.1000E+00 0.3000E-02
0.1200E+00 0.2000E-02
0.1400E+00 0.4000E-02
0.2000E-01 0.3000E-02
0.4000E-01 0.3000E-02
0.6000E-01 0.2000E-02
0.8000E-01 0.1000E-01
0.1000E+00 0.2000E-02
0.1200E+00 0.2000E-02
0.1200E+00 0.2000E-02
0.1400E+00 0.5000E-02
0.2000E-01 0.2000E-02
0.4000E-01 0.5000E-02
0.1400E+00 0.4000E-02
0.1600E+00 0.2000E-01
0.4000E-01 0.6000E-02
其中有重复的,我想排序后实现如下的输出格式:
0.2000E-01 0.2000E-02 0.3000E-02
0.4000E-01 0.2000E-02 0.3000E-02 0.5000E-02 0.6000E-02
0.6000E-01 0.2000E-02
0.8000E-01 0.1000E-01
0.1000E+00 0.2000E-02 0.3000E-02
0.1200E+00 0.2000E-02
0.1400E+00 0.4000E-02 0.5000E-02
0.1600E+00 0.2000E-01
即:重复的行保留一个,第一列按从小到大排列,第一列中相同的值,所对应的第二列的值,按从小到大一次排列到它后面。比如,与第一列的0.2000E-01对应的有三个值, 0.2000E-02, 0.3000E-02,0.2000E-02,删除一个重复的,另外两个按顺序排到 0.2000E-01的后面,如输出后的第一行所示,其余类推。
看起来觉得不难,结果俺弄了半天,总是出错,有哪位高手帮俺实现下。