2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
द्विचक्रीय अन्वेषणं क्रमबद्धसरणौ लक्ष्यतत्त्वानां शीघ्रं स्थानं ज्ञातुं उपयुक्तं कुशलं अन्वेषणं एल्गोरिदम् अस्ति । रेखीय अन्वेषणस्य तुलने द्विचक्रीय अन्वेषणस्य समयजटिलता O(log n) भवति, यत् अधिकं कार्यक्षमम् अस्ति । अस्मिन् लेखे द्विचक्रीयसन्धान-अल्गोरिदमस्य सिद्धान्तस्य, कार्यान्वयनस्य, अनुप्रयोगस्य च विस्तरेण परिचयः भविष्यति ।
द्विचक्रीय अन्वेषणं अन्वेषणपरिधिं निरन्तरं अर्धं कृत्वा लक्ष्यतत्त्वस्य शीघ्रं स्थानं ज्ञापयति । मूलभूतपदार्थाः निम्नलिखितरूपेण सन्ति ।
द्विचक्रीय अन्वेषणस्य जावास्क्रिप्ट् कार्यान्वयनम् निम्नलिखितम् अस्ति ।
/**
* 二分查找算法
* @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
/**
* 递归实现二分查找算法
* @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
द्विचक्रीय अन्वेषणं एकः कुशलः अन्वेषण-अल्गोरिदम् अस्ति यः अन्वेषण-परिधिं निरन्तरं आधां कृत्वा क्रमबद्ध-सरणौ लक्ष्य-तत्त्वस्य स्थानं शीघ्रं ज्ञातुं शक्नोति । द्विचक्रीयसन्धान-एल्गोरिदम् अवगन्तुं निपुणतां च अनेकव्यावहारिकसमस्यानां समाधानार्थं कार्यक्रमस्य कार्यप्रदर्शनस्य अनुकूलनार्थं च महत् महत्त्वपूर्णम् अस्ति । आशासे यत् एषः लेखः भवन्तं द्विचक्रीय अन्वेषणं अवगन्तुं प्रयोक्तुं च साहाय्यं करिष्यति।