回 帖 发 新 帖 刷新版面

主题:继续向大家请教数组排序问题

小弟遇到的问题如下,请大家帮忙~
一个数组,比如说共有100个整型元素,其中可能有很多个相等的数【比如其中有3个元素都是8;有12个元素都是6等等】。我想将相等的数都分别找到,并用write进行分别的输出,并且输出该组元素的大小及位置【比如:第一次输出的数值大小为8,对应的数组位置为5,76,99;第二次输出的数值大小为6,位置为3,21,34,......】。具体该怎么来编程呢?-------小弟没有确切的思路,望大家给予点拨~
衷心的谢谢大家

回复列表 (共1个回复)

沙发

program main
      integer dat(100)         !原始数据
    integer val(50)          !各组数值的大小
    integer Num(50)          !各组内元素的数目
    integer position(100,50) !各组内各元素的位置

      dat(:)= ...    !赋值
    Neq = 0        !出现相同值的组数
      do 30 i = 1, 99
       k = 1
c            如果第i个数值不是第一次出现,则跳过
       if ( Neq .ge. 1) then
         do L = 1,Neq
           if  (dat(i) .eq.  val(Neq)) goto 30
         enddo
       endif

c           寻找与第i个数大小相同的元素
         do 20 j = i+1, 10
          if (dat(j) .eq. dat(i)) then
            k=k+1               
            position(k,Neq+1) = j
          end if
   20     continue 
        if ( k .gt. 1)then 
            position(1,Neq+1) = i 
            Neq = Neq+1
            Num(Neq) = k
            val(Neq) = dat(i)
        endif
   30    continue
    stop
    end

我来回复

您尚未登录,请登录后再回复。点此登录或注册