কম্পিউটার টিউটোরিয়াল

পাইথনে রোটেটেড সর্টেড অ্যারেতে সার্চ


विचार करें कि हमारे पास आरोही क्रम में सॉर्ट किया गया एक सरणी है, और यह किसी अज्ञात पिवट पर घुमाया गया है। उदाहरण के लिए, [0,1,2,4,5,6,7] बन सकता है [4,5,6,7,0,1,2]। हमें खोजने के लिए एक लक्ष्य मान दिया गया है। यदि हम इसे सरणी में पा सकते हैं, तो इसका इंडेक्स लौटाएं, अन्यथा -1 लौटाएं। हम मान सकते हैं कि सरणी में कोई डुप्लिकेट नहीं है। इसलिए यदि सरणी [4,5,6,7,0,1,2] की तरह है, तो आउटपुट 4 होगा। क्योंकि इस तत्व का इंडेक्स 4 पर मौजूद है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −

  • low := 0 और high := सरणी की लंबाई
  • जब तक low < high
    • mid को mid := low + (high - low)/2 के रूप में ढूंढें
    • यदि arr[mid] = लक्ष्य, तो mid लौटाएं
    • यदि arr[low] <= arr[mid]
      • यदि लक्ष्य >= arr[low] और लक्ष्य < arr[mid], तो high := mid, अन्यथा low := mid + 1
    • अन्यथा
      • यदि लक्ष्य <= arr[high - 1] और लक्ष्य > arr[mid], तो low := mid + 1, अन्यथा high := mid
  • -1 लौटाएं

उदाहरण (पाइथन)

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें −

class Solution(object):    def search(self, nums, target):       low = 0       high = len(nums)       while low=nums[low] 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. পাইথনে মার্জ সর্ট (Merge Sort) ব্যাখ্যা

  2. পাইথনে সোর্টেড অ্যারে থেকে বাইনারি সার্চ ট্রি (Convert Sorted Array to BST)

  3. পাইথনে ইনসারশন সর্ট প্রোগ্রাম

  4. পাইথন প্রোগ্রাম: ইনসারশন সোর্ট অ্যালগরিদম