Tính độ phức tạp của thuật toán

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);
	}
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?