chào mọi người, em có đoạn code sau đây em có thắc mắc muốn hỏi mọi người là thuật toán dưới đây của em có độ phức tạp là bao nhiêu, theo em tính thì là O(n) kb có đúng k ạ
// đổi chỗ trong mảng a, i và j là vị trí đổi m là số số đổi chỗ
void Swap(int* a, int i, int j, int m) {
for (int k = 0; k < m; k++)
{
swap(a[k + i], a[k + j]);
}
}
// mảng a, vị trí đầu là x,vị trí cuối là y, n là chiều dài, m là số số đổi chỗ
void Doicho(int* a, int x, int y, int n, int m) {
if (m != n - m) {
if (m > n - m)
{
Swap(a, x, y - n + m, n - m);
if (check == true)
{
check = false;
Doicho(a, x, y - n + m, m, n - m);
}
else
{
check = true;
Doicho(a, x + n - m, y, m, n - m);
}
}
else
{
Swap(a, x, y - m, m);
if (check == true)
{
Doicho(a, x + m, y, n - m, m);
}
else
{
Doicho(a, x, y - m, n - m, m);
}
}
}
else
{
Swap(a, x, y - m, m);
}
}