Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで指定された配列がほぼソートされている(要素が最大で1つの位置にある)かどうかを確認します


numsと呼ばれる数値の配列があり、すべての要素が一意であるとします。 numsがほぼソートされているかどうかを確認する必要があります。ご存知のとおり、配列のいずれかの要素が、並べ替えられた配列の元の位置から最大1距離離れた場所で発生する可能性がある場合、配列はほぼ並べ替えられます。

したがって、入力がnums =[10、30、20、40]の場合、10は元の場所に配置され、他のすべての要素は実際の位置から最大1つの場所にあるため、出力はTrueになります。

これを解決するには、次の手順に従います-

  • i:=0
  • i
  • nums [i]> nums [i + 1]の場合、
    • nums[i]とnums[i+1]を入れ替える
    • i:=i + 1
  • i:=i + 1
  • 範囲0からnums-1のサイズのiの場合、do
    • nums [i]> nums [i + 1]の場合、
      • Falseを返す
  • Trueを返す
  • 理解を深めるために、次の実装を見てみましょう-

    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

    1. Pythonで指定された位置まで配列を反転するプログラム

      このチュートリアルでは、特定の位置まで配列を反転する方法を学習します。問題の説明を見てみましょう。 配列があります 整数と数のn 。私たちの目標は、配列の要素を逆にすることです 0日から (n-1)番目のインデックス 索引。たとえば、 Input array = [1, 2, 3, 4, 5, 6, 7, 8, 9] n = 5 Output [5, 4, 3, 2, 1, 6, 7, 8, 9] 目標を達成するための手順。 配列と数値を初期化します n/2までルー​​プします。 (i)番目を交換します インデックスと(n-i-1)番目 要素。 結果が得られる配列を印刷します。

    2. 指定された位置まで配列を反転するPythonプログラム

      ここでは、ユーザー入力配列と逆にする配列の位置を指定します。したがって、この配列を逆にすることがタスクです。サブ配列を[0から(n-1)]に逆にします。 例 Input : A=[3, 7, 6, 4, 1, 2] n=4 Output : [1, 4, 6, 7, 3, 2] アルゴリズム Step 1: reverse list starting from n-1 position. Step 2: split remaining list after n. Step 3: concat both parts and prints サンプルコード #Program to reverse a