-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path14_qsort.lat
41 lines (38 loc) · 838 Bytes
/
14_qsort.lat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
N: integer = 13
v: vec<float> = [6f, 1f, 2f, 6f, 3f, 6f, 2f, 7f, 4f, 7f, 2f, 1f, 1f]
munus partition(v: &float, n: integer) -> integer {
pivot: float = v[0]
i: integer = 0
j: integer = n - 1
dum(i < j) {
dum(i < j et v[j] >= pivot) {
j = j - 1
}
v[i] = v[j]
dum(i < j et v[i] <= pivot) {
i = i + 1
}
v[j] = v[i]
}
v[i] = pivot
reditus i
}
munus quick_sort(v: &float, n: integer) {
si(n <= 1) {
reditus;
}
i: integer = partition(v, n)
quick_sort(v, i)
quick_sort(v + i + 1, n - i - 1)
}
munus main() {
enim(i: integer; i < N; i = i + 1) {
imprimo(v[i], " ")
}
imprimo("\n")
quick_sort(v, N)
enim(i: integer; i < N; i = i + 1) {
imprimo(v[i], " ")
}
imprimo("\n")
}