त्वरित छँटाई एक छँटाई एल्गोरिथ्म है जो विभाजित और जीत विधि का उपयोग करता है। यह एक धुरी तत्व लेता है और उसे उसकी सही स्थिति में रखता है। फिर पिवट एलीमेंट के बाएँ और दाएँ ऐरे को क्विक सॉर्ट का उपयोग करके फिर से सॉर्ट किया जाता है। यह तब तक किया जाता है जब तक कि पूरी सरणी क्रमबद्ध न हो जाए।
एक प्रोग्राम जो C# में रिकर्सन का उपयोग करके त्वरित सॉर्ट को प्रदर्शित करता है, वह इस प्रकार दिया गया है -
उदाहरण
using System; namespace QuickSortDemo { class Example { static public int Partition(int[] arr, int left, int right) { int pivot; pivot = arr[left]; while (true) { while (arr[left] < pivot) { left++; } while (arr[right] > pivot) { right--; } if (left < right) { int temp = arr[right]; arr[right] = arr[left]; arr[left] = temp; } else { return right; } } } static public void quickSort(int[] arr, int left, int right) { int pivot; if (left < right) { pivot = Partition(arr, left, right); if (pivot > 1) { quickSort(arr, left, pivot - 1); } if (pivot + 1 < right) { quickSort(arr, pivot + 1, right); } } } static void Main(string[] args) { int[] arr = {67, 12, 95, 56, 85, 1, 100, 23, 60, 9}; int n = 10, i; Console.WriteLine("Quick Sort"); Console.Write("Initial array is: "); for (i = 0; i < n; i++) { Console.Write(arr[i] + " "); } quickSort(arr, 0, 9); Console.Write("\nSorted Array is: "); for (i = 0; i < n; i++) { Console.Write(arr[i] + " "); } } } }
आउटपुट
उपरोक्त कार्यक्रम का आउटपुट इस प्रकार है।
Quick Sort Initial array is: 67 12 95 56 85 1 100 23 60 9 Sorted Array is: 1 9 12 23 56 60 67 85 95 100
आइए अब उपरोक्त कार्यक्रम को समझते हैं।
मुख्य () फ़ंक्शन में, पहले प्रारंभिक सरणी प्रदर्शित होती है। फिर, फ़ंक्शन QuickSort () को सरणी पर त्वरित सॉर्ट करने के लिए कहा जाता है। इसके लिए कोड स्निपेट इस प्रकार दिया गया है -
int[] arr = {67, 12, 95, 56, 85, 1, 100, 23, 60, 9}; int n = 10, i; Console.WriteLine("Quick Sort"); Console.Write("Initial array is: "); for (i = 0; i < n; i++) { Console.Write(arr[i] + " "); } quickSort(arr, 0, 9);
फ़ंक्शन QuickSort () में, विभाजन () फ़ंक्शन को कॉल करके एक धुरी तत्व का चयन किया जाता है। फिर QuickSort () को फिर से तर्कों के साथ बुलाया जाता है जो धुरी के मूल्य पर निर्भर करते हैं। इसके लिए कोड स्निपेट इस प्रकार दिया गया है -
if (left < right) { pivot = Partition(arr, left, right); if (pivot > 1) { quickSort(arr, left, pivot - 1); } if (pivot + 1 < right) { quickSort(arr, pivot + 1, right); } }
पार्टिशन () फ़ंक्शन में, पिवट तत्व को प्रदान की गई सरणी के सबसे बाएं तत्व के रूप में चुना जाता है और फिर इसे सरणी में इसकी सही स्थिति पर सेट किया जाता है। इसके लिए सभी चरणों को प्रदर्शित करने वाला कोड स्निपेट इस प्रकार दिया गया है।
int pivot; pivot = arr[left]; while (true) { while (arr[left] < pivot) { left++; } while (arr[right] > pivot) { right--; } if (left < right) { int temp = arr[right]; arr[right] = arr[left]; arr[left] = temp; } else { return right; } }