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

QuickSort को लागू करने के लिए जावास्क्रिप्ट में विभाजन और जीत तर्क को लागू करें

<घंटा/>

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

क्विकसॉर्ट

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

उदाहरण

आइए इस फ़ंक्शन के लिए कोड लिखें -

const arr = [43, 3, 34, 34, 23, 232, 3434, 4, 23, 2, 54, 6, 54];
// Find a "pivot" element in the array to compare all other
// elements against and then shift elements before or after
// pivot depending on their values
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, // Start pointer at the first item in the
   array
   j = right // Start pointer at the last item in the array
   while(i <= j) {
      // Move left pointer to the right until the value at the
      // left is greater than the pivot value
      while(arr[i] < pivot) {
         i++
      }
      // Move right pointer to the left until the value at the
      // right is less than the pivot value
      while(arr[j] > pivot) {
         j--
      }
      // If the left pointer is less than or equal to the
      // right pointer, then swap values
      if(i <= j) {
         [arr[i], arr[j]] = [arr[j], arr[i]] // ES6 destructuring swap
         i++
         j--
      }
   }
   return i
}
console.log(quickSort(arr));

आउटपुट

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

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

  1. जावास्क्रिप्ट में एसिंक्रोनस लूप को कैसे कार्यान्वित करें?

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

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

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

  1. एल्गोरिदम को विभाजित और जीतना का परिचय

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