ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/diamesh/src/trirea.cpp
Revision: 283
Committed: Tue Sep 13 21:11:20 2011 UTC (13 years, 8 months ago) by francois
File size: 2157 byte(s)
Log Message:
structure de l'écriture

File Contents

# User Rev Content
1 francois 283 /*****************************************************************
2    
3     trirea.c Type:Func
4    
5     tri d un tableau dans le sens croissant
6    
7     Vient de Alain RASSINEUX
8    
9    
10    
11    
12    
13    
14     *****************************************************************/
15    
16    
17    
18    
19     #include <stdio.h>
20     void trirea(float *a,int *la,int *ir)
21     {
22     int iu[21], il[21], i, m, j, k, ij, l, itt, it ;
23     float t, tt, r ;
24    
25     if (*la<=0) return ;
26     m = 1 ;
27     i = 1 ;
28     j = *la ;
29     r = 0.375 ;
30     lab5 :
31     if (i==j) goto lab45 ;
32     if (r>0.5898437) goto lab10 ;
33     r = r + 3.90625e-2 ;
34     goto lab15 ;
35     lab10 :
36     r = r - 0.21875 ;
37     lab15 :
38     k = i ;
39    
40     ij = i+(j-i)*r ;
41     t = a[ij-1] ;
42     it = ir[ij-1] ;
43    
44     if (a[i-1]<=t) goto lab20 ;
45     a[ij-1] = a[i-1] ;
46     a[i-1] = t ;
47     t = a[ij-1] ;
48     ir[ij-1] = ir[i-1] ;
49     ir[i-1] = it ;
50     it = ir[ij-1] ;
51     lab20 :
52     l = j ;
53    
54     if (a[j-1]>=t) goto lab30 ;
55     a[ij-1] = a[j-1] ;
56     a[j-1] = t ;
57     t = a[ij-1] ;
58     ir[ij-1] = ir[j-1] ;
59     ir[j-1] = it ;
60     it = ir[ij-1] ;
61    
62     if (a[i-1]<=t) goto lab30 ;
63     a[ij-1] = a[i-1] ;
64     a[i-1] = t ;
65     t = a[ij-1] ;
66     ir[ij-1] = ir[i-1] ;
67     ir[i-1] = it ;
68     // it = ir[ij-1] ;
69     goto lab30 ;
70     lab25 :
71     if (a[l-1]==a[k-1]) goto lab30 ;
72     tt = a[l-1] ;
73     a[l-1] = a[k-1] ;
74     a[k-1] = tt ;
75     itt = ir[l-1] ;
76     ir[l-1] = ir[k-1] ;
77     ir[k-1] = itt ;
78     lab30 :
79     l = l-1 ;
80     if (a[l-1]>t) goto lab30 ; ;
81    
82     lab35 :
83     k = k+1 ;
84     if (a[k-1]<t) goto lab35 ;
85     if (k<=l) goto lab25 ;
86     if ((l-i)<=(j-k)) goto lab40 ;
87     il[m-1] = i ;
88     iu[m-1] = l ;
89     i = k ;
90     m = m+1 ;
91     goto lab50 ;
92     lab40 :
93     il[m-1] = k ;
94     iu[m-1] = j ;
95     j = l ;
96     m = m+1 ;
97     goto lab50 ;
98     lab45 :
99     m = m-1 ;
100     if (m==0) return ;
101     i = il[m-1] ;
102     j = iu[m-1] ;
103     lab50 :
104     if ((j-i)>=11) goto lab15 ;
105     if (i==1) goto lab5 ;
106     i = i-1 ; ;
107     lab55 :
108     i = i+1 ;
109     if (i==j) goto lab45 ;
110     t = a[i] ;
111     it = ir[i] ;
112     if (a[i-1]<=t) goto lab55 ;
113     k = i ;
114     lab60 :
115     a[k] = a[k-1] ;
116     ir[k] = ir[k-1] ;
117     k = k-1 ;
118     if (t<a[k-1]) goto lab60 ;
119     a[k] = t ;
120     ir[k] = it ;
121     goto lab55 ;
122     }