-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSorting.algo
More file actions
50 lines (49 loc) · 1.05 KB
/
Sorting.algo
File metadata and controls
50 lines (49 loc) · 1.05 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
PROCEDURE swap(VAR xp, VAR yp : INTEGER)
VAR
tmp : INTEGER;
BEGIN
tmp := xp;
xp := yp;
yp := tmp;
END
/* *** Bubble sort *** */
PROCEDURE bubble_sort(VAR tab : ARRAY_OF INTEGER)
VAR
i,j,n : INTEGER;
BEGIN
n := tab.length;
FOR i FROM 0 TO n-2 STEP 1 DO
// Last i elements are already in place
FOR j FROM 0 TO n-i-2 STEP 1 DO
IF (tab[j]>tab[j+1]) THEN
swap(tab[j], tab[j+1])
END_IF
END_FOR
END_FOR
END
PROCEDURE swap(VAR xp, VAR yp : INTEGER)
VAR
tmp : INTEGER;
BEGIN
tmp := xp;
xp := yp;
yp := tmp;
END
/**** selection sort ****/
PROCEDURE selection_sort(VAR tab : ARRAY_OF INTEGER)
VAR
i,j,min_idx,n : INTEGER;
BEGIN
n := tab.length;
// one by one move boundary of sub-array
FOR i FROM 0 TO n-2 STEP 1 DO
min_idx := i;
FOR j FROM 0 TO n-i-2 STEP 1 DO
IF (tab[j]>tab[min_idx]) THEN
min_idx := j;
END_IF
END_FOR
// swap the found minimum element with the first element
swap(arr[min_idx],arr[i])
END_FOR
END