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

Pythonで許可されている隣接の条件付きスワッピングで配列をソートできるかどうかを確認します


numsと呼ばれる順序付けられていない数値の配列があり、すべての要素が0からn-1の範囲にあるとします。隣接する要素を必要な回数だけ交換できますが、これらの要素間の絶対差が1の場合に限ります。numを並べ替えることができるかどうかを確認する必要があります。

したがって、入力がnums =[1、0、3、2、5、4]のような場合、これらのペアを交換できるため、出力はTrueになります[(1、0)、(3、2)、(5 、4)] [0、1、2、3、4、5]を並べ替えます。

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

  • 範囲0からnums-2のサイズのiの場合、do
    • nums [i]> nums [i + 1]の場合、
      • nums [i]-nums [i + 1]が1と同じ場合、
        • nums[i]とnums[i+1]を交換します
      • それ以外の場合、
        • Falseを返す
  • Trueを返す

理解を深めるために、次の実装を見てみましょう-

def solve(nums):
   for i in range(len(nums) - 1):
      if nums[i] > nums[i+1]:
         if nums[i] - nums[i+1] == 1:
            nums[i], nums[i+1] = nums[i+1], nums[i]
         else:
            return False
   return True
nums = [1, 0, 3, 2, 5, 4]
print(solve(nums))

入力

[1, 0, 3, 2, 5, 4]

出力

True

  1. Pythonでk個のマージソート呼び出しを含む配列を検索する

    2つの数値aとbがあるとすると、範囲[1、a]の値を含む配列を見つける必要があり、再帰マージソート関数の呼び出しを正確にb回行う必要があります。 したがって、入力がa =10、b =15の場合、出力は[3,1,4,6,2,8,5,9,10,7]になります。 これを解決するには、次の手順に従います- 関数solve()を定義します。これは、左、右、配列、bを取ります b<1または左+1が右と同じ場合、 戻る b:=b-2 mid:=(左+右)/ 2 temp:=array [mid-1] array [mid-1]:=array [mid] array [mid]:

  2. Pythonで配列をパリティで並べ替える

    いくつかの番号を持つ配列Aがあるとします。数字を偶数から奇数に並べる必要があります。したがって、最初に偶数を入力し、次に奇数を入力します。したがって、配列がA =[1、5、6、8、7、2、3]の場合、結果は[6、8、2、1、5、7、3]のようになります。 これを解決するには、次の手順に従います- set i:=0 and j:=0 whilej