Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าสามารถจัดเรียงอาร์เรย์ด้วยการสลับหนึ่งครั้งใน Python . ได้หรือไม่


สมมติว่าเราได้รับอาร์เรย์ที่มีองค์ประกอบจำนวนเต็ม เราต้องค้นหาว่าค่าในอาร์เรย์สามารถจัดเรียงตามลำดับที่ไม่ลดลงได้หรือไม่ถ้าเราสามารถดำเนินการสลับได้เพียงครั้งเดียว ถ้าเป็นไปได้ เราว่าทำได้ ไม่อย่างนั้นไม่

ดังนั้น หากอินพุตเป็นเหมือน input_list =[7, 8, 12, 10, 11, 9] ผลลัพธ์จะเป็น “สามารถทำได้”

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • temp_list :=สำเนาของรายการ input_list
  • เรียงลำดับรายการ temp_list
  • swap_count :=0
  • สำหรับ i ในช่วง 0 ถึงขนาดของ input_list ให้ทำ
    • ถ้า input_list[i] ไม่เหมือนกับ temp_list[i] แล้ว
      • swap_count :=swap_count + 1
  • ถ้า swap_count เหมือนกับ 0 หรือ swap_count เหมือนกับ 2 แล้ว
    • คืนค่า True
  • มิฉะนั้น
    • คืนค่าเท็จ

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

from copy import deepcopy
def solve(input_list):
   temp_list = deepcopy(input_list)
   temp_list.sort()
   swap_count = 0
   for i in range(len(input_list)):
      if input_list[i] != temp_list[i]:
         swap_count += 1
   if swap_count == 0 or swap_count == 2:
      print("Can be done")
   else:
      print("Can't be done")
input_list = [7, 8, 12, 10, 11, 9] 
solve(input_list)

อินพุต

[7, 8, 12, 10, 11, 9]

ผลลัพธ์

Can be done