কম্পিউটার

পাইথনে ঘূর্ণিত সাজানো অ্যারে অনুসন্ধান করুন


বিবেচনা করুন আমাদের একটি অ্যারে ঊর্ধ্বক্রম অনুসারে সাজানো আছে, এবং এটি আপনার আগে থেকে অজানা কিছু পিভটে ঘোরানো হয়েছে৷ উদাহরণস্বরূপ, [0,1,2,4,5,6,7] হতে পারে [4,5,6,7,0,1,2]। আমরা অনুসন্ধানের জন্য একটি লক্ষ্য মান দিয়েছি। যদি আমরা এটিকে অ্যারেতে পেতে পারি, তবে এর সূচকটি ফেরত দিন, অন্যথায় -1 দিন। আমরা ধরে নিতে পারি অ্যারেতে কোনো সদৃশ নেই। সুতরাং যদি অ্যারেটি [4,5,6,7,0,1,2] এর মত হয়, তাহলে আউটপুট হবে 4. যেহেতু এই উপাদানটির সূচী 4 তে উপস্থিত রয়েছে।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • নিম্ন :=0 এবং উচ্চ :=অ্যারের দৈর্ঘ্য
  • যদিও কম <উচ্চ
    • মধ্যকে মধ্য হিসাবে খুঁজুন :=নিম্ন + (উচ্চ - নিম্ন)/2
    • যদি arr[mid] =টার্গেট, তারপর mid রিটার্ন
    • যদি arr[low] <=arr[mid]
      • যদি টার্গেট>=arr[low] এবং টার্গেট
    • অন্যথায়
      • যদি লক্ষ্য <=arr[high - 1] এবং target> arr[mid] হয়, তারপর low :=mid + 1, অন্যথায় high :=mid
  • রিটার্ন -1

উদাহরণ(পাইথন)

আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −

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 mid
         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 -1
ob1 = Solution()
print(ob1.search([4,5,6,7,8,0,1,2], 0))

ইনপুট

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

আউটপুট

5

  1. পাইথনে মার্জ সর্ট ব্যাখ্যা কর

  2. পাইথনে বাইনারি সার্চ ট্রিতে সাজানো অ্যারেকে রূপান্তর করুন

  3. পাইথন প্রোগ্রামে সন্নিবেশ বাছাই

  4. সন্নিবেশ সাজানোর জন্য পাইথন প্রোগ্রাম