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

C++ प्रोग्राम बड़ी संख्या में तत्वों पर त्वरित सॉर्ट करने के लिए

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

यहां हम सॉर्ट करने के लिए एक बड़े सरणी (लगभग 100 तत्व) पर विचार कर रहे हैं। हम कुछ संख्याएँ ले रहे हैं और फिर उन्हें क्रमबद्ध करने के लिए यादृच्छिक क्रम में फेरबदल कर रहे हैं। फिर क्विकसॉर्ट तकनीक का उपयोग करके सॉर्ट करें।

क्विकॉर्ट तकनीक की जटिलता

  • समय की जटिलता − O(n log n) सर्वोत्तम मामले और औसत मामले के लिए, O(n 2 ) सबसे खराब स्थिति के लिए।

  • अंतरिक्ष जटिलता -ओ(लॉग एन)

इनपुट - क्रमबद्ध सूची:90 45 22 11 22 50
आउटपुट - क्रमबद्ध करने के बाद सरणी:11 22 22 45 50 90

एल्गोरिदम

विभाजन (सरणी, निचला, ऊपरी)

इनपुट -डेटा सेट सरणी, निचली सीमा और ऊपरी सीमा

आउटपुट - सही स्थिति में पिवट करें

Begin
   pivot := array[upper]
   i := lower – 1
   for j in range lower to higher, do
      if array[j] < pivot, then
         exchange the values of array[i] and array[j]
         i := i + 1
   done
   exchange the values of array[upper] and array[i + 1]
   return i + 1
End

quickSort(सरणी, बाएँ, दाएँ)

इनपुट - डेटा की एक सरणी, और सरणी की निचली और ऊपरी सीमा

आउटपुट - सॉर्ट किया गया ऐरे

Begin
   if lower < right then
   q = partition(array, left, right).
   quickSort(array, left, q-1)
   quickSort(array, q+1, right)
End

उदाहरण कोड

#include<iostream>
#include<cstdlib>
#include<ctime>
#define MAX 100
using namespace std;
void random_shuffle(int arr[]) { //function to shuffle the array elements into random positions
   srand(time(NULL));
   for (int i = MAX - 1; i > 0; i--) {
      int j = rand()%(i + 1);
      int temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
   }
}
int partion(int arr[], int p, int r) {
   int pivot = arr[r]; //last item as pivot
   int i = p - 1;
   for (int j = p; j < r; j++) {
      if (arr[j] < pivot) {
         i++;
         swap(arr[i], arr[j]);
      }
   }
   swap(arr[i+1], arr[r]);
   return i + 1;
}
void quick_sort(int arr[], int p, int q) { //recursively sort the list
   int j;
   if (p < q) {
      j = partion(arr, p, q);
      quick_sort(arr, p, j - 1);
      quick_sort(arr, j + 1, q);
   }
}
int main() {
   int i;
   int arr[MAX];
   for (i = 0;i < MAX;i++)
   arr[i] = i + 1;
   random_shuffle(arr); //To randomize the array
   quick_sort(arr, 0, MAX-1); //sort the elements of array
   for (i = 0; i < MAX;i++)
      cout << arr[i] << " ";
   cout << endl;
   return 0;
}

आउटपुट

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

  1. C++ प्रोग्राम में बड़ी संख्या के लिए 37 से विभाज्य

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

  1. C++ प्रोग्राम में बड़ी संख्या के लिए 12 से विभाज्यता

    इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो यह जांचता है कि स्ट्रिंग फॉर्मेट में दी गई बड़ी संख्या 12 से विभाज्य है या नहीं। हम इस समस्या को हल करने के लिए थोड़ा सा गणित का उपयोग करने जा रहे हैं। यदि संख्या 3 और 4 से विभाज्य है, तो संख्या 12 से विभाज्य होगी। एक संख्या 3 से विभाज्य होती

  1. सरणी तत्वों के गुणन के लिए C++ प्रोग्राम

    पूर्णांक तत्वों की एक सरणी के साथ दिया गया और कार्य एक सरणी के तत्वों को गुणा करना और इसे प्रदर्शित करना है। उदाहरण Input-: arr[]={1,2,3,4,5,6,7} Output-: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040 Input-: arr[]={3, 4,6, 2, 7, 8, 4} Output-: 3 x 4 x 6 x 2 x 7 x 8 x 4 = 32256 नीचे दिए गए कार्यक्रम में उपयोग क