Ở đây ta dùng một mảng nhập từ người dùng và kích thước nhóm. Tạo mảng con theo kích thước nhóm và đảo ngược nó. Nếu kích thước nhóm (p) không phải bội của kích thước mảng (n) thì nhóm cuối sẽ còn lại dưới k phần tử và đảo ngược tất cả phần tử còn lại. Nếu p=1 mảng không đổi, nếu p>=n thì đảo ngược toàn bộ mảng.
Thuật toán
Revarray(A,n,p) /* A là mảng nguyên, n kích thước mảng, mỗi mảng con kích thước p từ đầu mảng đảo ngược */ Bước 1: i là biến điều khiển vòng lặp khởi tạo 0. Bước 2: Dùng while kiểm tra i < n. Nếu đúng Bước 2.1: L = i /* Trái mảng con Bước 2.2: R = min(i + p - 1, n - 1) /* Phải mảng con Bước 2.3: Dùng while kiểm tra L < R. Nếu có Bước 2.3.1: Hoán đổi A[L] và A[R]. Bước 2.3.2: L tăng 1. Bước 2.3.3: R giảm 1. Bước 2.4: Kết thúc While Bước 2.5: i = i + p Bước 3: Kết thúc While Bước 4: Dừng
Mã ví dụ
# Đảo ngược mảng theo nhóm kích thước cho trước def arrayreverse(A, n, p): i = 0 while(i < n): L = i R = min(i + p - 1, n - 1) while (L < R): A[L], A[R] = A[R], A[L] L += 1; R -= 1 i += p # Mã điều khiển # Nhập dữ liệu vào mảng A=list() n=int(input("Nhập kích thước mảng ::")) print("Nhập số ::") for i in range(int(n)): k=int(input("")) A.append(int(k)) p=int(input("Nhập kích thước nhóm ::")) arrayreverse(A, n, p) for i in range(0, n): print(A[i], end=" ") Kết quả
Nhập kích thước mảng ::6 Nhập số :: 11 22 33 44 55 66 Nhập kích thước nhóm ::2 22 11 44 33 66 55