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

JavaScript में डिवाइड और कंकर लॉजिक इम्प्लीमेंट करके क्विकसॉर्ट बनाएं


हमें एक JavaScript फंक्शन लिखना है जो संख्याओं का ऐरे लेता है और क्विक सॉर्ट एल्गोरिदम का उपयोग करके इसे सॉर्ट करता है।

क्विकसॉर्ट

यह एल्गोरिदम मूल रूप से एक डिवाइड और कंकर एल्गोरिदम है जहां हम लूप के हर पास में एक पिवट चुनते हैं और पिवट से छोटे सभी एलिमेंट्स को उसके बाएं और बड़े को दाएं रखते हैं (यदि आरोही क्रम में सॉर्ट करना है तो अन्यथा विपरीत)।

उदाहरण

const arr = [43, 3, 34, 34, 23, 232, 3434, 4, 23, 2, 54, 6, 54];

// ऐरे में एक "पिवट" एलिमेंट ढूंढें जिसकी तुलना अन्य सभी
// एलिमेंट्स से की जाए और फिर मानों के आधार पर एलिमेंट्स को
// पिवट से पहले या बाद में शिफ्ट करें

const quickSort = (arr, left = 0, right = arr.length - 1) => {
    let len = arr.length, index;
    if(len > 1) {
        index = partition(arr, left, right)
        if(left < index - 1) {
            quickSort(arr, left, index - 1)
        }
        if(index < right) {
            quickSort(arr, index, right)
        }
    }
    return arr
}

const partition = (arr, left, right) => {
    let middle = Math.floor((right + left) / 2),
        pivot = arr[middle],
        i = left, // ऐरे में पहले आइटम पर पॉइंटर शुरू करें
        j = right // ऐरे में अंतिम आइटम पर पॉइंटर शुरू करें
    while(i <= j) {
        // बाएं पॉइंटर को दाएं ले जाएं जब तक बाएं पर मान
        // पिवट मान से बड़ा न हो
        while(arr[i] < pivot) {
            i++
        }
        // दाएं पॉइंटर को बाएं ले जाएं जब तक दाएं पर मान
        // पिवट मान से छोटा न हो
        while(arr[j] > pivot) {
            j--
        }
        // यदि बायां पॉइंटर दाएं पॉइंटर से कम या बराबर है,
        // तो मान स्वैप करें
        if(i <= j) {
            [arr[i], arr[j]] = [arr[j], arr[i]] // ES6 डिस्ट्रक्चरिंग स्वैप
            i++
            j--
        }
    }
    return i
}

console.log(quickSort(arr));

आउटपुट

कंसोल में आउटपुट -

[
    2, 3, 4, 6, 23,
    23, 34, 34, 43, 54,
    54, 232, 3434
]

  1. JavaScript में एसिंक्रोनस लूप (Asynchronous Loop) कैसे इम्प्लीमेंट करें? JavaScript में एसिंक्रोनस लूप (Asynchronous Loop) कैसे इम्प्लीमेंट करें?

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

  1. JavaScript में क्लोजर्स (Closures) का उपयोग करके प्राइवेट प्रॉपर्टीज़ इम्प्लीमेंट करना JavaScript में क्लोजर्स (Closures) का उपयोग करके प्राइवेट प्रॉपर्टीज़ इम्प्लीमेंट करना

    JavaScript में क्लोजर्स का उपयोग करके प्राइवेट प्रॉपर्टीज़ इम्प्लीमेंट करने का निम्नलिखिक कोड है:उदाहरण<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0&q

  1. - डिवाइड एंड कंकर (विभाजन और विजय) एल्गोरिदम का परिचय

    डिवाइड एंड कंकर एल्गोरिदम पैराडाइम में से एक है। इसके मुख्य रूप से तीन अलग-अलग चरण हैं -डिवाइड − इस चरण में समस्या को उसी प्रकार की कुछ छोटी उप-समस्याओं में विभाजित किया जाता है।कंकर − उप-समस्याओं को रिकर्सिवली हल करें।कंबाइन − अंतिम उत्तर प्राप्त करने के लिए उप-समस्याओं के उत्तरों को संयोजित करें।इ