#include "implicit_f.inc"
Go to the source code of this file.
◆ itrimhpsort()
| subroutine itrimhpsort |
( |
integer, dimension(len) | tab, |
|
|
integer | len ) |
Definition at line 28 of file itrimhpsort.F.
29
30
31
32
33
34
35#include "implicit_f.inc"
36
37
38
39 INTEGER :: LEN, TAB(LEN)
40
41
42
43 INTEGER I,J,K,L,VAL
44
45 IF (len < 2) RETURN
46 l = len/2 + 1
47 k = len
48
49
50
51
52
53
54 DO
55 IF (l > 1)THEN
56 l=l-1
57 val=tab(l)
58 ELSE
59 val=tab(k)
60 tab(k)=tab(1)
61 k=k-1
62 IF (k == 1) THEN
63 tab(1)=val
64 EXIT
65 END IF
66 END IF
67 i=l
68 j=l+l
69 DO WHILE (j <= k)
70 IF(j < k) THEN
71 IF (tab(j) < tab(j+1)) j=j+1
72 END IF
73 IF (val < tab(j)) THEN
74 tab(i)=tab(j)
75 i=j
76 j=j+j
77 ELSE
78 j=k+1
79 END IF
80 END DO
81 tab(i)=val
82 ENDDO
83
84
85
86
87 j = 1
88 val = tab(1)
89 DO i=2,len
90 IF (tab(i) == val) cycle
91 val = tab(i)
92 j = j+1
93 tab(j) = val
94 END DO
95 len = j
96
97 RETURN