// Code from https://nguyenvanhieu.vn
#include <stdio.h>
// Hàm đổi chỗ 2 số nguyên
void
swap
(
int
&xp, int &yp)
{
int temp = xp;
xp
=
yp
;
yp
=
temp
;
}
// Hàm selection sort
void
selectionSort
(
int
arr
[
]
,
int
n
)
{
int
i
,
j
,
min_idx
;
// Di chuyển ranh giới của mảng đã sắp xếp và chưa sắp xếp
for
(
i
=
0
;
i
<
n
–
1
;
i
++
)
{
// Tìm phần tử nhỏ nhất trong mảng chưa sắp xếp
min_idx
=
i
;
for
(
j
=
i
+
1
;
j
<
n
;
j
++
)
if
(
arr
[
j
]
<
arr
[
min_idx
]
)
min_idx
=
j
;
// Đổi chỗ phần tử nhỏ nhất với phần tử đầu tiên
swap
(
arr
[
min_idx
]
,
arr
[
i
]
)
;
}
}
/* Hàm xuất mảng */
void
printArray
(
int
arr
[
]
,
int
size
)
{
int
i
;
for
(
i
=
0
;
i
<
size
;
i
++
)
printf
(
“%d “
,
arr
[
i
]
)
;
printf
(
“n”
)
;
}
int
main
(
)
{
int
arr
[
]
=
{
64
,
25
,
12
,
22
,
11
}
;
int
n
=
sizeof
(
arr
)
/
sizeof
(
arr
[
0
]
)
;
selectionSort
(
arr
,
n
)
;
printf
(
“Sorted array: n”
)
;
printArray
(
arr
,
n
)
;
return
0
;
}