Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 주어진 배열이 거의 정렬되었는지 확인합니다(요소가 최대 한 위치 떨어져 있음).

<시간/>

모든 요소가 고유한 nums라는 숫자 배열이 있다고 가정합니다. num이 거의 정렬되었는지 확인해야 합니다. 우리가 알고 있듯이 배열의 요소가 정렬된 배열의 원래 위치에서 최대 1 거리에 있을 때 배열이 거의 정렬된 것입니다.

따라서 입력이 nums =[10, 30, 20, 40]과 같으면 10이 원래 위치에 배치되고 다른 모든 요소가 실제 위치에서 최대 한 위치에 있으므로 출력은 True가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • i :=0
  • 동안 i <숫자 크기 - 1, do
    • 숫자[i]> 숫자[i + 1]이면
      • 숫자[i]와 숫자[i + 1] 교환
      • 나는 :=나는 + 1
    • 나는 :=나는 + 1
  • 0부터 숫자 - 1까지의 범위에 있는 i에 대해
    • 숫자[i]> 숫자[i + 1]이면
      • 거짓을 반환
  • 참 반환

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

def solve(nums):
   i = 0
   while i < len(nums) - 1:
      if nums[i] > nums[i + 1]:
         nums[i], nums[i + 1] = nums[i + 1], nums[i]
         i += 1
      i += 1
   for i in range(len(nums) - 1):
      if nums[i] > nums[i + 1]:
         return False
   return True
nums = [10, 30, 20, 40]
print(solve(nums))

입력

[10, 30, 20, 40]

출력

True