Go to the source code of this file.
|
| void | insertUpInts (PORD_INT n, PORD_INT *array) |
| void | insertUpIntsWithStaticIntKeys (PORD_INT n, PORD_INT *array, PORD_INT *key) |
| void | insertDownIntsWithStaticFloatKeys (PORD_INT n, PORD_INT *array, FLOAT *key) |
| void | insertUpFloatsWithIntKeys (PORD_INT n, FLOAT *array, PORD_INT *key) |
| void | qsortUpInts (PORD_INT n, PORD_INT *array, PORD_INT *stack) |
| void | qsortUpFloatsWithIntKeys (PORD_INT n, FLOAT *array, PORD_INT *key, PORD_INT *stack) |
| void | distributionCounting (PORD_INT n, PORD_INT *node, PORD_INT *key) |
◆ THRES
◆ distributionCounting()
Definition at line 186 of file sort.c.
188 PORD_INT *tmp, *count, minkey, maxkey, l, u, vk;
189
190
192 maxkey = 0;
193 for (i = 0; i <
n; i++)
194 { u = node[i];
195 maxkey =
max(key[u], maxkey);
196 minkey =
min(key[u], minkey);
197 }
198 l = maxkey-minkey;
199
202 for (i = 0; i <= l; i++)
203 count[i] = 0;
204
205
206 for (i = 0; i <
n; i++)
207 { u = node[i];
208 vk = key[u]-minkey;
209 key[u] = vk;
210 count[vk]++;
211 }
212
213
214 for (i = 1; i <= l; i++)
215 count[i] += count[i-1];
216 for (i =
n-1; i >= 0; i--)
217 { u = node[i];
218 tmp[--count[key[u]]] = u;
219 }
220 for (i = 0; i <
n; i++)
221 node[i] = tmp[i];
222
223
224
225
226
227
228 free(count);
229 free(tmp);
230}
#define mymalloc(ptr, nr, type)
◆ insertDownIntsWithStaticFloatKeys()
Definition at line 58 of file sort.c.
61
62 for (i = 1; i <
n; i++)
63 { e = array[i]; ke = key[e]; j = i;
64 while ((j > 0) && (key[array[j-1]] < ke))
65 { array[j] = array[j-1];
66 j--;
67 }
68 array[j] = e;
69 }
70}
◆ insertUpFloatsWithIntKeys()
Definition at line 77 of file sort.c.
80
81 for (i = 1; i <
n; i++)
82 { e = array[i]; ke = key[i]; j = i;
83 while ((j > 0) && (key[j-1] > ke))
84 { array[j] = array[j-1];
85 key[j] = key[j-1];
86 j--;
87 }
88 array[j] = e;
89 key[j] = ke;
90 }
91}
◆ insertUpInts()
Definition at line 21 of file sort.c.
23
24 for (i = 1; i <
n; i++)
25 { v = array[i]; j = i;
26 while ((j > 0) && (array[j-1] > v))
27 { array[j] = array[j-1];
28 j--;
29 }
30 array[j] = v;
31 }
32}
◆ insertUpIntsWithStaticIntKeys()
Definition at line 39 of file sort.c.
42
43 for (i = 1; i <
n; i++)
44 { e = array[i]; ke = key[e]; j = i;
45 while ((j > 0) && (key[array[j-1]] > ke))
46 { array[j] = array[j-1];
47 j--;
48 }
49 array[j] = e;
50 }
51}
◆ qsortUpFloatsWithIntKeys()
Definition at line 140 of file sort.c.
144
145 l = 0;
r =
n-1; p = 2;
146 while (p > 0)
148 { m = l + ((
r-l) >> 1);
150 {
swap(array[l], array[
r], e);
swap(key[l], key[
r], t); }
151 if (key[l] > key[m])
152 {
swap(array[l], array[m], e);
swap(key[l], key[m], t); }
154 {
swap(array[m], array[
r], e);
swap(key[m], key[
r], t); }
155 m = key[
r]; i = l-1; j =
r;
156 for (;;)
157 { while (key[++i] < m);
158 while (key[--j] > m);
159 if (i >= j) break;
160 swap(array[i], array[j], e);
swap(key[i], key[j], t);
161 }
162 swap(array[i], array[
r], e);
swap(key[i], key[
r], t);
164 { stack[p++] = l;
165 stack[p++] = i-1;
166 l = i+1;
167 }
168 else
169 { stack[p++] = i+1;
172 }
173 }
174 else
176 l = stack[--p];
177 }
179}
void insertUpFloatsWithIntKeys(PORD_INT n, FLOAT *array, PORD_INT *key)
◆ qsortUpInts()
Definition at line 98 of file sort.c.
101
102 l = 0;
r =
n-1; p = 2;
103 while (p > 0)
105 { m = l + ((
r-l) >> 1);
106 if (array[l] > array[
r])
swap(array[l], array[
r], t);
107 if (array[l] > array[m])
swap(array[l], array[m], t);
108 if (array[
r] > array[m])
swap(array[m], array[
r], t);
109 m = array[
r]; i = l-1; j =
r;
110 for (;;)
111 { while (array[++i] < m);
112 while (array[--j] > m);
113 if (i >= j) break;
114 swap(array[i], array[j], t);
115 }
116 swap(array[i], array[
r], t);
118 { stack[p++] = l;
119 stack[p++] = i-1;
120 l = i+1;
121 }
122 else
123 { stack[p++] = i+1;
126 }
127 }
128 else
130 l = stack[--p];
131 }
133}
void insertUpInts(PORD_INT n, PORD_INT *array)