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

Pythonでシーケンスをソートするために必要なスワップの数を見つけるためのプログラム


個別の番号のリストがあるとします。リストを昇順で並べ替えるのに必要なスワップの最小数を見つける必要があります。

したがって、入力がnums =[3、1、7、5]の場合、出力は2になります。これは、3と1、次に5と7を入れ替えることができるためです。

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

  • sort_seq:=リスト番号を並べ替える
  • テーブル:=新しいマップ
  • 各インデックスiおよびnumsの値nについて、実行します
    • table [n]:=i
  • スワップ:=0
  • 0からnumsのサイズの範囲のiの場合は、
    • n:=nums [i]
    • s_n:=sort_seq [i]
    • s_i:=table [s_n]
    • s_nがnと同じでない場合、
      • スワップ:=スワップ+1
      • nums [s_i]:=n
      • nums [i]:=s_n
      • table [n]:=s_i
      • table [s_n]:=i
  • リターンスワップ

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

サンプルコード

class Solution:
def solve(self, nums):
   sort_seq = sorted(nums)
   table = {}

   for i, n in enumerate(nums):
      table[n] = i
   swaps = 0
   for i in range(len(nums)):
      n = nums[i]
      s_n = sort_seq[i]
      s_i = table[s_n]

      if s_n != n:
         swaps += 1
         nums[s_i] = n
         nums[i] = s_n
         table[n] = s_i
         table[s_n] = i

      return swaps

ob = Solution()
nums = [3, 1, 7, 5]
print(ob.solve(nums))

入力

[3, 1, 7, 5]

出力

2

  1. リスト内の最小数を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。リストで利用可能な最小の番号を表示する必要があります ここでは、リストを並べ替えて最小の要素を取得するか、組み込みのmin()関数を使用して最小の要素を取得できます。 次に、以下の実装の概念を観察しましょう- 例 list1 = [101, 120, 104, 145, 99] # sorting using built-in function list1.sort() print("Smallest element is:", list1[0]) 出力 Smal

  2. リスト内で最大の数を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、リストの最大の要素を計算する必要があります。 ここでは、組み込み関数を使用して、問題ステートメントの解決策に到達します sort()関数の使用 例 # list list1 = [23,1,32,67,2,34,12] # sorting list1.sort() # printing the last element print("Largest element is:", list1[-1]) 出力 Largest in given array is 67