-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTriRapide.ha
More file actions
50 lines (45 loc) · 1.28 KB
/
Copy pathTriRapide.ha
File metadata and controls
50 lines (45 loc) · 1.28 KB
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
42
43
44
45
46
47
48
49
50
use fmt;
export fn main() void = {
let tableau: [_]int = [5,2,10,11,11,0,8,4,6,9];
afficheTableau(tableau);
triRapide(tableau,0, 9);
afficheTableau(tableau);
};
export fn triRapide(tableau: []int, premier: int, dernier: int) void = {
if (premier <= dernier){
let pivot : int = partitionner(tableau, premier, dernier);
triRapide(tableau, premier, pivot-1);
triRapide(tableau, pivot+1,dernier);
};
};
export fn partitionner(tableau: []int, premier: int, dernier: int) int={
let pivot: int = tableau[premier];
let pe : int = premier;
let ge : int = dernier;
for (true){
if (pe == ge){
fmt::print("ok")!;
break;
}else{
if(tableau[pe+1]<= pivot){
tableau[pe] = tableau[pe+1];
pe = pe+1;
}else{
let temp : int = tableau[pe+1];
tableau[pe+1] = tableau[ge];
tableau[ge] = temp;
ge = ge -1;
};
};
};
fmt::print("ok2")!;
afficheTableau(tableau);
tableau[ge] = pivot;
return pivot;
};
export fn afficheTableau(tableau: []int) void ={
for (let i = 0z; i < len(tableau); i+=1){
fmt::print(tableau[i]," ")!;
};
fmt::println()!;
};