การหมุนอาร์เรย์ไปทางซ้าย (Left Rotation) หมายถึงการเลื่อนสมาชิกแต่ละตัวไปทางซ้าย และนำสมาชิกตัวแรกไปวางไว้ท้ายสุด ทำซ้ำตามจำนวนครั้งที่กำหนด
ตัวอย่างโค้ด
my_list = [11, 12, 23, 34, 65]
n = 3
print("The list is : ")
for i in range(0, len(my_list)):
print(my_list[i])
for i in range(0, n):
first_elem = my_list[0]
for j in range(0, len(my_list)-1):
my_list[j] = my_list[j+1]
my_list[len(my_list)-1] = first_elem
print()
print("Array after left rotating is : ")
for i in range(0, len(my_list)):
print(my_list[i])
ผลลัพธ์
The list is : 11 12 23 34 65 Array after left rotating is : 34 65 11 12 23
คำอธิบาย
กำหนดลิสต์และจำนวนครั้งที่ต้องการหมุน (n = 3)
วนลูป n ครั้ง: ในแต่ละรอบ เก็บค่าสมาชิกแรกไว้ แล้วเลื่อนสมาชิกอื่นๆ ไปทางซ้ายทีละตำแหน่ง
นำค่าที่เก็บไว้ (สมาชิกแรกเดิม) ไปวางที่ตำแหน่งสุดท้าย
วิธีที่มีประสิทธิภาพมากกว่า: ใช้ slicing ดังนี้ my_list = my_list[n:] + my_list[:n] ซึ่งทำงานได้ใน O(n) และเข้าใจง่ายกว่า