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

Pythonで回転ソート配列IIを検索


配列が昇順でソートされているとします。それは、事前に私たちに知られていないいくつかのピボットで回転します。たとえば、配列が[0,0,1,2,2,5,6]のような場合、これは[2,5,6,0,0,1,2]になる可能性があります。検索するターゲット値があります。それが配列で見つかった場合はtrueを返し、そうでない場合はfalseを返します。したがって、配列が[2,5,6,0,0,1,2]のようで、ターゲットが0の場合、出力は0になります

手順を見てみましょう-

  • 低:=0および高:=配列のサイズ
  • 低い<高い
    • 中:=低+(高-低)/ 2
    • nums [mid] =targetの場合、trueを返します
    • nums [low] =nums[mid]およびnums[high-1]=nums [mid]の場合、
      • 低値を1増やし、高値を1減らし、次の反復に進みます
    • nums [low] <=nums [mid]の場合、
      • if target> =nums [low] and target&miinus; nums [mid]、次にhigh:=mid、それ以外の場合はlow:=mid + 1
    • それ以外の場合
      • target <=nums[high-1]およびtarget>nums[mid]の場合、low:=mid + 1、それ以外の場合はhigh:=mid
  • falseを返す

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

class Solution(object):
   def search(self, nums, target):
      low = 0
      high = len(nums)
      while low<high:
         mid = low + (high-low)//2
         if nums[mid] == target:
            return True
         if nums[low] == nums[mid] and nums[high-1] == nums[mid]:
            low +=1
            high -=1
            continue
         if nums[low]<=nums[mid]:
            if target >=nums[low] and target <nums[mid]:
               high = mid
            else:
               low = mid+1
         else:
            if target<=nums[high-1] and target>nums[mid]:
               low = mid+1
            else:
               high = mid
      return False
ob1 = Solution()
print(ob1.search([2,5,6,0,0,1,2], 0))

入力

[2,5,6,0,0,1,2]
0

出力

True

  1. Pythonプログラムでの挿入ソート

    この記事では、Python3.xでの挿入ソートの実装について学習します。またはそれ以前。 アルゴリズム ソートされた配列を各反復で拡張することにより、入力要素を反復します。 現在の要素を、並べ替えられた配列で使用可能な最大値と比較します。 現在の要素の方が大きい場合は、その要素をそのままにして次の要素に移動します。それ以外の場合は、並べ替えられた配列内で正しい位置を見つけて、配列内のその位置に移動します。 これは、並べ替えられた配列内の現在の要素よりも大きいすべての要素を右にシフトすることで実現されます。 それでは、アルゴリズムの視覚的表現を見てみましょう

  2. 挿入ソート用のPythonプログラム

    この記事では、Python3.xでの挿入ソートの実装について学習します。またはそれ以前。 アルゴリズム 1. Iterate over the input elements by growing the sorted array at each iteration. 2. Compare the current element with the largest value available in the sorted array. 3. If the current element is greater, then it leaves the element in its place &n