ใช้ลิสต์อินพุตผู้ใช้และขนาดกลุ่ม สร้างซับอาร์เรย์ตามขนาดกลุ่มแล้วกลับลำดับ ถ้าขนาดกลุ่ม(p) ไม่ใช่ตัวคูณของขนาดอาร์เรย์(n) กลุ่มสุดท้ายจะมีสมาชิกน้อยกว่า k และกลับทั้งหมด ถ้า p=1 อาร์เรย์ไม่เปลี่ยน ถ้า p>=n กลับทั้งอาร์เรย์
อัลกอริทึม
Revarray(A,n,p) /* A คืออาร์เรย์จำนวนเต็ม n ขนาดอาร์เรย์ ทุกซับอาร์เรย์ขนาด p เริ่มจากต้นทางและกลับ */ ขั้นตอนที่ 1: i คือตัวควบคุมลูป เริ่มต้น 0 ขั้นตอนที่ 2: while loop ตรวจสอบ i น้อยกว่า n ถ้าจริง ขั้นตอนที่ 2.1: L=i /* ซ้ายซับอาร์เรย์ ขั้นตอนที่ 2.2: R=min(i+p-1, n-1) /* ขวาซับอาร์เรย์ ขั้นตอนที่ 2.3: while loop ตรวจสอบ L น้อยกว่า R ถ้าจริง ขั้นตอนที่ 2.3.1: สลับซ้าย A(L) และขวา A(R) ขั้นตอนที่ 2.3.2: L เพิ่ม 1 ขั้นตอนที่ 2.3.3: R ลด 1 ขั้นตอนที่ 2.4: End While ขั้นตอนที่ 2.5: i=i+p ขั้นตอนที่ 3: End While ขั้นตอนที่ 4: หยุด
โค้ดตัวอย่าง
# กลับอาร์เรย์เป็นกลุ่มขนาดกำหนด
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
# โค้ดหลัก
# ใส่ข้อมูลในอาร์เรย์
A = list()
n = int(input("ป้อนขนาดของอาร์เรย์ ::"))
print("ป้อนตัวเลข ::")
for i in range(int(n)):
k = int(input(""))
A.append(int(k))
p = int(input("ป้อนขนาดของกลุ่ม ::"))
arrayreverse(A, n, p)
for i in range(0, n):
print(A[i], end=" ")
ผลลัพธ์
ป้อนขนาดของอาร์เรย์ ::6 ป้อนตัวเลข :: 11 22 33 44 55 66 ป้อนขนาดของกลุ่ม ::2 22 11 44 33 66 55