Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> JavaScript

JavaScript में ब्लॉक खोज (Block Search) का कार्यान्वयन


ब्लॉक खोज

बाइनरी खोज की तरह, ब्लॉक खोज भी क्रमबद्ध सरणियों के लिए एक खोज एल्गोरिदम है। मूल विचार रैखिक खोज की तुलना में कम तत्वों की जांच करना है, निश्चित चरणों से आगे कूदकर या सभी तत्वों को खोजने के स्थान पर कुछ तत्वों को छोड़कर।

उदाहरण के लिए

मान लीजिए हमारे पास लंबाई n की एक सरणी arr और आकार m का ब्लॉक (कूदने के लिए) है। फिर हम सूचकांकों arr[0], arr[m], arr[2 * m], ..., arr[k * m] आदि पर खोज करते हैं।

एक बार जब हमें अंतराल arr[k * m] < x < arr[(k+1) * m] मिल जाता है, तो हम इंडेक्स k * m से तत्व x खोजने के लिए रैखिक खोज संक्रिया करते हैं।

इस एल्गोरिदम की समय जटिलता है -

O(√n)

उदाहरण

निम्नलिखित कोड देखें:

const arr = [1, 4, 6, 7, 9, 12, 15, 16, 17, 23, 25, 26, 27, 31];
const target = 25;

const blockSearch = (arr = [], target) => {
  let { length: len } = arr;
  let step = Math.floor(Math.sqrt(len));
  let blockStart = 0;
  let currentStep = step;
  while (arr[Math.min(currentStep, len) - 1] < target) {
    blockStart = currentStep;
    currentStep += step;
    if (blockStart >= len)
      return -1;
  }
  while (arr[blockStart] < target) {
    blockStart++;
    if (blockStart == Math.min(currentStep, len))
      return -1;
  }
  if (arr[blockStart] == target)
    return blockStart;
  else
    return -1;
};

console.log(blockSearch(arr, target));

आउटपुट

कंसोल पर निम्नलिखित आउटपुट प्राप्त होगा:

10

  1. जावास्क्रिप्ट में ब्लॉक स्कोपिंग जावास्क्रिप्ट में ब्लॉक स्कोपिंग

    परिचय ब्लॉक स्कोप दो कर्ली ब्रेसेस { } के बीच का क्षेत्र होता है - जो लूप्स, if कंडीशन्स, स्विच स्टेटमेंट्स, या स्टैंडअलोन ब्लॉक्स में हो सकता है। ES2015 में पेश किए गए let और const हमें ब्लॉक-स्कोप्ड वेरिएबल्स बनाने की अनुमति देते हैं जिन्हें केवल उन ब्लॉक्स के अंदर एक्सेस किया जा सकता है। उदाहरण

  1. क्या जावास्क्रिप्ट ब्लॉक स्कोप सपोर्ट करता है? क्या जावास्क्रिप्ट ब्लॉक स्कोप सपोर्ट करता है?

    जावास्क्रिप्ट केवल उन वेरिएबल्स के लिए ब्लॉक स्कोप सपोर्ट करता है जिन्हें let या const कीवर्ड का उपयोग करके घोषित किया गया था। var का उपयोग करके घोषित वेरिएबल्स फ़ंक्शन स्कोप सपोर्ट करते हैं लेकिन ब्लॉक स्कोप नहीं। जावास्क्रिप्ट में ब्लॉक स्कोप प्रदर्शित करने का कोड निम्नलिखित है - उदाहरण <!DO

  1. जावास्क्रिप्ट में लीनियर सर्च लागू करना जावास्क्रिप्ट में लीनियर सर्च लागू करना

    जावास्क्रिप्ट में लीनियर सर्च लागू करने के लिए निम्नलिखित कोड है: उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Docum