प्रौद्योगिकी साझेदारी

[JavaScript Algorithm] द्विचक्रीय अन्वेषणम्: लक्ष्यतत्त्वस्य शीघ्रं स्थानं ज्ञातव्यम्

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

🔥 个人主页:रिक्त काव्य

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

द्विचक्रीय अन्वेषणं क्रमबद्धसरणौ लक्ष्यतत्त्वानां शीघ्रं स्थानं ज्ञातुं उपयुक्तं कुशलं अन्वेषणं एल्गोरिदम् अस्ति । रेखीय अन्वेषणस्य तुलने द्विचक्रीय अन्वेषणस्य समयजटिलता O(log n) भवति, यत् अधिकं कार्यक्षमम् अस्ति । अस्मिन् लेखे द्विचक्रीयसन्धान-अल्गोरिदमस्य सिद्धान्तस्य, कार्यान्वयनस्य, अनुप्रयोगस्य च विस्तरेण परिचयः भविष्यति ।


1. एल्गोरिदम सिद्धान्त

द्विचक्रीय अन्वेषणं अन्वेषणपरिधिं निरन्तरं अर्धं कृत्वा लक्ष्यतत्त्वस्य शीघ्रं स्थानं ज्ञापयति । मूलभूतपदार्थाः निम्नलिखितरूपेण सन्ति ।

  1. प्रारम्भिकः अन्वेषणपरिधिः सरणीयाः आरम्भसूचकाङ्कः, अन्त्यसूचकाङ्कः च भवति ।
  2. मध्यवर्ती सूचकाङ्कस्य गणनां कुरुत।
  3. मध्यसूचकाङ्के स्थितस्य तत्त्वस्य लक्ष्यतत्त्वेन सह तुलनां करोति ।
    • यदि समानं भवति तर्हि लक्ष्यतत्त्वं लभ्यते तस्य अनुक्रमणिका च प्रत्यागच्छति ।
    • यदि लक्ष्यतत्त्वं मध्यसूचकाङ्के स्थितस्य तत्त्वात् लघुतरं भवति तर्हि अन्वेषणपरिधिं वाम अर्धं यावत् संकुचितं कुर्वन्तु ।
    • यदि लक्ष्यतत्त्वं मध्यसूचकाङ्के स्थितस्य तत्त्वात् बृहत्तरं भवति तर्हि अन्वेषणपरिधिं दक्षिणार्धं यावत् संकुचितं कुर्वन्तु ।
  4. उपर्युक्तानि पदानि पुनः पुनः कुर्वन्तु यावत् अन्वेषणपरिधिः रिक्तः न भवति अथवा लक्ष्यतत्त्वं न लभ्यते ।


2. एल्गोरिदम कार्यान्वयन

द्विचक्रीय अन्वेषणस्य जावास्क्रिप्ट् कार्यान्वयनम् निम्नलिखितम् अस्ति ।

/**
 * 二分查找算法
 * @param {number[]} arr - 有序数组
 * @param {number} target - 目标元素
 * @return {number} - 目标元素的索引,未找到返回 -1
 */
function binarySearch(arr, target) {
  let left = 0;
  let right = arr.length - 1;

  while (left <= right) {
    const mid = Math.floor((left + right) / 2);
    
    if (arr[mid] === target) {
      return mid; // 找到目标元素
    } else if (arr[mid] < target) {
      left = mid + 1; // 查找右半部分
    } else {
      right = mid - 1; // 查找左半部分
    }
  }

  return -1; // 未找到目标元素
}

// 示例
const arr = [1, 3, 5, 7, 9, 11, 13];
const target = 7;
const index = binarySearch(arr, target);
console.log(index); // 输出: 3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

3. अनुप्रयोगपरिदृश्यानि

  1. क्रमबद्धः सरणी अन्वेषणम्: क्रमबद्धसरणौ शीघ्रं तत्त्वानां स्थानं ज्ञातव्यम् ।
  2. समस्यानां समाधानं कुर्वन्ति: कतिपयानां एल्गोरिदमिकसमस्यानां समाधानार्थं उपयुज्यते येषां कृते द्विचक्रीयसन्धानस्य आवश्यकता भवति, यथा सरणीयां शिखरतत्त्वानां अन्वेषणम् ।
  3. दत्तांशविश्लेषणम्: दत्तांशविश्लेषणे द्विचक्रीय-अन्वेषणस्य उपयोगः भवति यत् विशिष्टस्य मूल्यस्य स्थानं शीघ्रं ज्ञातुं शक्यते ।

4. अनुकूलनं विस्तारं च

  1. पुनरावर्तनीय कार्यान्वयन: पुनरावर्तनीय-कार्यन्वयनस्य अतिरिक्तं द्विचक्रीय-अन्वेषणं पुनरावर्तनीयरूपेण अपि कार्यान्वितुं शक्यते ।
/**
 * 递归实现二分查找算法
 * @param {number[]} arr - 有序数组
 * @param {number} target - 目标元素
 * @param {number} left - 左索引
 * @param {number} right - 右索引
 * @return {number} - 目标元素的索引,未找到返回 -1
 */
function binarySearchRecursive(arr, target, left = 0, right = arr.length - 1) {
  if (left > right) {
    return -1; // 未找到目标元素
  }

  const mid = Math.floor((left + right) / 2);

  if (arr[mid] === target) {
    return mid; // 找到目标元素
  } else if (arr[mid] < target) {
    return binarySearchRecursive(arr, target, mid + 1, right); // 查找右半部分
  } else {
    return binarySearchRecursive(arr, target, left, mid - 1); // 查找左半部分
  }
}

// 示例
const indexRecursive = binarySearchRecursive(arr, target);
console.log(indexRecursive); // 输出: 3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  1. प्रथमं वा अन्तिमं वा घटनां ज्ञातव्यम्: द्विचक्रीय अन्वेषणेन क्रमबद्धसरणौ प्रथमस्य अथवा अन्तिमस्य लक्ष्यतत्त्वस्य स्थानं अन्वेष्टुं एल्गोरिदम् विस्तारयितुं शक्यते ।

5. सारांशः

द्विचक्रीय अन्वेषणं एकः कुशलः अन्वेषण-अल्गोरिदम् अस्ति यः अन्वेषण-परिधिं निरन्तरं आधां कृत्वा क्रमबद्ध-सरणौ लक्ष्य-तत्त्वस्य स्थानं शीघ्रं ज्ञातुं शक्नोति । द्विचक्रीयसन्धान-एल्गोरिदम् अवगन्तुं निपुणतां च अनेकव्यावहारिकसमस्यानां समाधानार्थं कार्यक्रमस्य कार्यप्रदर्शनस्य अनुकूलनार्थं च महत् महत्त्वपूर्णम् अस्ति । आशासे यत् एषः लेखः भवन्तं द्विचक्रीय अन्वेषणं अवगन्तुं प्रयोक्तुं च साहाय्यं करिष्यति।