bonjour,
dans un programme fortran, je veux classer mes resultats dans un ordre déscendant, je vous prie de me guider pour le faire et merci.
Version imprimable
bonjour,
dans un programme fortran, je veux classer mes resultats dans un ordre déscendant, je vous prie de me guider pour le faire et merci.
La solution dépend de la longueur de la liste. Si elle est courte et que l'efficacité n'est pas importante, j'utilise presque toujours une approche naïve :
- Je déclare un vecteur logique (disons Disponible) de la longueur du tableau
- J'ai aussi besoin du maximum des éléments disponibles
- et de sa position
Ça donne quelque chose comme :
Si la liste est plus longue et que l'efficacité devient importante, j'utilise alors une routine de tri publique. Tu peux voir les sites de Alan Miller ou Michel Olagnon assez facile à trouver par Google : Fortran + Allan + Miller...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 integer PosMax integer ValMax logical Dispo(n) ... Dispo = .true. do k = 1, n ValMax = -1000 do j = 1, n if (Dispo(j) .and. Val(j) > ValMax) then ValMax = Val(j) PosMax = j endif enddo Dispo(PosMax) = .false. write(*,*) PosMax, ValMax, ... enddo
je vous remercie sylvain pour votre aide.