Computer in Hindi | Business in Hindi: c
Showing posts with label c. Show all posts
Showing posts with label c. Show all posts

Wednesday, December 2, 2020

What is Multithreading in C - C tutorial in Hindi

December 02, 2020 0
What is Multithreading in C - C tutorial in Hindi

Multithreading in c का एक विशिष्ट रूप है और एक मल्टीटास्किंग वह विशेषता है जो आपके कंप्यूटर को दो या अधिक कार्यक्रमों को समवर्ती रूप से चलाने की अनुमति देती है। 

सामान्य तौर पर, मल्टीटास्किंग दो प्रकार के होते हैं: प्रक्रिया-आधारित और थ्रेड-आधारित।

प्रक्रिया-आधारित मल्टीटास्किंग कार्यक्रमों के समवर्ती निष्पादन को संभालती है। 

थ्रेड-आधारित मल्टीटास्किंग एक ही कार्यक्रम के टुकड़ों के समवर्ती निष्पादन से संबंधित है।

एक बहुस्तरीय कार्यक्रम में दो या अधिक भाग होते हैं जो समवर्ती रूप से चल सकते हैं।

इस तरह के एक कार्यक्रम के प्रत्येक भाग को एक थ्रेड कहा जाता है, और प्रत्येक थ्रेड निष्पादन के एक अलग मार्ग को परिभाषित करता है।


Multithreaded in c in Hindi

 

Multithreaded in c in hindi :-अनुप्रयोगों के लिए कोई अंतर्निहित समर्थन नहीं है। इसके बजाय, यह पूरी तरह से इस सुविधा को प्रदान करने के लिए ऑपरेटिंग सिस्टम पर निर्भर करता है।

यह ट्यूटोरियल मानता है कि आप लिनक्स ओएस पर काम कर रहे हैं और हम POSIX का उपयोग करके
Multithreaded सी प्रोग्राम लिखने जा रहे हैं। POSIX थ्रेड्स या Pthreads API प्रदान करता है जो कई Unix-जैसे POSIX सिस्टम जैसे FreeBSD, NetBSD, GNU / Linux, Mac OS X और Solaris पर उपलब्ध हैं।

POSIX थ्रेड बनाने के लिए निम्न दिनचर्या का उपयोग किया जाता है -

#include <pthread.h>
pthread_create (thread, attr, start_routine, arg)

यहाँ, pthread_create एक नया धागा बनाता है और इसे निष्पादन योग्य बनाता है। 

इस दिनचर्या को आपके कोड के भीतर कहीं से भी कई बार कहा जा सकता है। यहाँ मापदंडों का वर्णन है।

 

Multithreading in c in hindi
Multithreading in c

एक प्रक्रिया द्वारा बनाए जा सकने वाले थ्रेड्स की अधिकतम संख्या कार्यान्वयन पर निर्भर होती है। 

एक बार बनाने के बाद, थ्रेड्स सहकर्मी होते हैं, और अन्य धागे बना सकते हैं। धागे के बीच कोई अंतर्निहित पदानुक्रम या निर्भरता नहीं है।


Know how to Terminating Threads in c in Hindi


निम्नलिखित दिनचर्या है जो हम एक POSIX थ्रेड को समाप्त करने के लिए उपयोग करते हैं -

#include <pthread.h>
pthread_exit (status)

यहाँ pthread_exit का उपयोग स्पष्ट रूप से एक धागे से बाहर निकलने के लिए किया जाता है। आमतौर पर, pthread_exit () रूटीन को थ्रेड के बाद अपना काम पूरा करने के बाद कहा जाता है और अब अस्तित्व में नहीं है।

यदि main() उसके द्वारा बनाए गए थ्रेड्स से पहले खत्म हो जाता है, और pthread_exit () के साथ बाहर निकल जाता है, तो अन्य थ्रेड निष्पादित होते रहेंगे। 

अन्यथा, वे स्वचालित रूप से समाप्त हो जाएंगे जब main() खत्म हो जाएगा। 

Example for multithreading in c in Hindi

#include <iostream>
#include <cstdlib>
#include <pthread.h>
using namespace std;
#define NUM_THREADS 5
void *PrintHello(void *threadid) {
   long tid;
   tid = (long)threadid;
   printf("Hello World! Thread ID, %d\n", tid);
   pthread_exit(NULL);
}
int main () {
   pthread_t threads[NUM_THREADS];
   int rc;
   int i;
   for( i = 0; i < NUM_THREADS; i++ ) {
      cout << "main() : creating thread, " << i << endl;
      rc = pthread_create(&threads[i], NULL, PrintHello, (void *)i);
      if (rc) {
         printf("Error:unable to create thread, %d\n", rc);
         exit(-1);
      }
   }
   pthread_exit(NULL);
}

Tuesday, November 17, 2020

What is union in c in hindi with example - C programming Tutorial in Hindi

November 17, 2020 0
What is union in c in hindi with example - C programming Tutorial in Hindi

union in c in hindi

Union C प्रोग्रामिंग भाषा में उपयोगकर्ता परिभाषित डेटाटाइप है। यह एक ही मेमोरी लोकेशन में विभिन्न डेटाटाइप्स के वेरिएबल का एक संग्रह है।

 हम कई सदस्यों के साथ एक यूनियन को परिभाषित कर सकते हैं, लेकिन दिए गए बिंदु पर केवल एक सदस्य में एक मान हो सकता है। 

जब आप कुछ मेमोरी मैप्ड रजिस्टरों के माध्यम से बाह्य उपकरणों से बात करने की आवश्यकता होती है तो यूनियन बहुत उपयोगी हो सकती है।

Need for Union in C in Hindi


Union in C programming सी यूनियनों की आवश्यकता मेमोरी को बचाने के लिए उपयोग की जाती है। 

एक union को बेहतर ढंग से समझने के लिए, इसे स्मृति का एक हिस्सा समझें जो विभिन्न प्रकारों के चर को संग्रहीत करने के लिए उपयोग किया जाता है। 

जब हम किसी क्षेत्र में एक नया मान निर्दिष्ट करना चाहते हैं, तो मौजूदा डेटािस को नए डेटा के साथ बदल दिया जाता है। 

यूनियनों डेटा सदस्यों को अनुमति देते हैं जो समान मेमोरी साझा करने के लिए पारस्परिक रूप से अनन्य होते हैं। 

यह काफी महत्वपूर्ण है कि स्मृति मूल्यवान है, जैसे कि एम्बेडेड सिस्टम। यूनियनों का उपयोग ज्यादातर एम्बेडेड प्रोग्रामिंग में किया जाता है। मेमोरी तक सीधे पहुंच की आवश्यकता होती है। 

Difference between structure and union in c in Hindi

संरचना और एक संघ के बीच मुख्य अंतर यह है किस्ट्रक्ट्स संरचना में सभी क्षेत्रों को संग्रहीत करने के लिए पर्याप्त स्थान आवंटित करते हैं। 

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


Understand the Syntax union in c in Hindi

union syntax in c
union syntax


एक Union की घोषणा करने के लिए एक सी यूनियनसंटैक्स की घोषणा के लिए सिंटैक्स एक समान है जो कीवर्ड संरचना को छोड़कर एक संरचना की घोषणा करता है

नोट: संघ का आकार इसके सबसे बड़े क्षेत्र का आकार है क्योंकि पर्याप्त संख्या में बाइट आरक्षित होनी चाहिए, जो सबसे बड़े आकार के क्षेत्र को संग्रहीत कर सकते हैं।

 Union के क्षेत्रों तक पहुँचने के लिए, डॉट (.) ऑपरेटर का उपयोग करें, चर नाम जिसके बाद डॉट है। 

ऑपरेटर ने फ़ील्ड के नाम का अनुसरण किया। 

Initializing unions in c: संरचना और संघ के बीच का अंतर जब उनका प्रारंभ नीचे दिया गया है।

संघ के क्षेत्रों को एक ही बार में प्रारंभ नहीं किया जा सकता है। एक संरचना चर के लिए आउटपुट ठीक है, लेकिन मिलनसार के लिए उत्तर सही प्रतीत नहीं होता है क्योंकि संघ किसी सदस्य के लिए एक समय पर एकल मान रख सकता है। यानी, डेटा को स्मृति में लिखा गया है। 

स्पष्ट रूप से हमने जो उपयोग का मामला चुना है, वह केवल यूनियनबुट के लिए अनुकूल नहीं है। यह उदाहरण केवल संघ और संरचना के व्यवहार को प्रदर्शित करने के लिए है। 

Unions inside structure in Hindi in c

नीचे दिए गए कोड में, हमारे पास एक संरचना में संघ है। हम जानते हैं, एक संघ के क्षेत्र साझाकरण करेंगे, इसलिए मुख्य कार्यक्रम में हम उपयोगकर्ता से पूछते हैं कि वह कौन सा डेटा संग्रहीत करना चाहता है और उपयोगकर्ता के आधार पर उपयुक्त फ़ील्ड का उपयोग किया जाएगा। इस तरह हम मेमोरी का कुशलता से उपयोग कर सकते हैं


 #includestructstudent { 
  union {    
  //anonymous 
  union (unnamed union)charname[10]; introll; }; intmark;  }; 
  intmain()
  {
  structstudent stud;
  charchoice; 
  printf("\n You can enter your name or roll number "); 
  printf("\n Do you want to enter the name (y or n): ");
  scanf("%c",&choice); if(choice=='y'||choice=='Y') {
  printf("\n Enter name: "); scanf("%s",stud.name); 
  printf("\n Name:%s",stud.name); }
  else { printf("\n Enter roll number");
  scanf("%d",&stud.roll); printf("\n Roll:%d",stud.roll); } 
  printf("\n Enter marks"); scanf("%d",&stud.mark); 
  printf("\n Marks:%d",stud.mark);
  return0; 
  }


OUTPUT 

example of union in c in hindi
example of union in c


structure inside Union in Hindi in c

यूनियन के अंदर एक संरचना को परिभाषित करने के लिए UnionsExample के अंदर संरचनाएं नीचे दी गई हैं

#includeintmain() { 
  structstudent {
  charname[30]; 
  introllno; 
  floatpercentage; };
  uniondetails { 
  structstudent s1; };
  union details set;
  printf("Enter details:");
  printf("\nEnter name : "); 
  scanf("%s", set.s1.name); 
  printf("\nEnter roll no : "); 
  scanf("%d", &set.s1.rollno);
  printf("\nEnter percentage :"); 
  scanf("%f", &set.s1.percentage);
  printf("\nThe student details are : \n"); 
  printf("\name : %s", set.s1.name);
  printf("\nRollno : %d", set.s1.rollno);
  printf("\nPercentage : %f", set.s1.percentage);
  return0;  }


निष्कर्ष इस सी ट्यूटोरियल में, हमने सी यूनियनों, उनके सिंटैक्स और उपयोग के बारे में सीखा है। इसके अलावा, हमने सीखा कि सी यूनियनों ने सी संरचनाओं से कैसे अलग किया।

Thursday, August 13, 2020

What Is Recursion In c In Hindi and its Advantages and Disadvantages

August 13, 2020 0
What Is Recursion In c In Hindi and its Advantages and Disadvantages
इस Recursion in c in Hindi Tutorial में, आप एक उदाहरण की मदद से C programming in Hindi में Recursion functions को लिखना सीखेंगे।

एक functions जो स्वयं को कॉल करता है, एक 
Recursion functions के रूप में जाना जाता है। और, इस तकनीक को Recursion के रूप में जाना जाता है

What Is Recursion In c In Hindi and its Advantages and Disadvantages
What Is Recursion In C In Hindi and its Advantages and Disadvantages


Recursion in c in Hindi


void recurse function()
{
    ... .. ...
    recurse function();
    ... .. ...
}

int main()
{
    ... .. ...
    recurse function();
    ... .. ...
}

इसे रोकने के लिए कुछ स्थिति पूरी होने तक recursion जारी रहती है।

infinite recursion को रोकने के लिए,  if...else statement (या समान approach) का उपयोग किया जा सकता है जहां एक शाखा recursive call करता है, और अन्य नहीं करता है।

प्रारंभ में, sum() को main() Function number के साथ Call
किया जाता है जो एक passed as an argument हो जाता है।

मान लीजिए, शुरू में n के अंदर n () का मान 3 है। अगले फ़ंक्शन कॉल के दौरान, 2 को sum () फ़ंक्शन में पास किया जाता है। यह प्रक्रिया तब तक जारी रहती है जब तक n 0 के बराबर न हो जाए।

जब n 0 के बराबर होता है, यदि स्थिति विफल हो जाती है और किसी अन्य भाग को पूर्णांकों के योग को मुख्य रूप से main() function पर वापस किया जाता है।


Recursion In c In Hindi
Recursion In c In Hindi

Types Of Pointers In C In Hindi

 Dangling Pointer in C in Hindi

    जब कोई ऑब्जेक्ट डिलीट या डी-आबंटित होता है, तो पॉइंटर पॉइंटर को पॉइंटर के मान को संशोधित किए बिना उत्पन्न होता है, ताकि पॉइंटर अभी भी डी-एलिमेंट मेमोरी के मेमोरी लोकेशन की ओर इंगित करता है।

    संक्षेप में, एक गैर-मौजूदा मेमोरी लोकेशन को इंगित करने वाले पॉइंटर को डैंगलिंग पॉइंटर कहा जाता है।

Generic Pointer in Hindi

जब एक वैरिएबल को टाइप करने के लिए एक पॉइंटर घोषित किया जाता है, तो इसे जेनेरिक पॉइंटर के रूप में जाना जाता है। चूंकि आपके पास प्रकार शून्य का एक चर नहीं हो सकता है, इसलिए सूचक किसी भी डेटा को इंगित नहीं करेगा और इसलिए इसे संदर्भित नहीं किया जा सकता है। यह अभी भी एक संकेतक है, हालांकि इसका उपयोग करने के लिए आपको बस इसे दूसरे प्रकार के सूचक को डालना होगा।

Generic Pointer यह बहुत उपयोगी है जब आप एक पॉइंटर को अलग-अलग समय पर विभिन्न प्रकार के डेटा को इंगित करना चाहते हैं।

Wild Pointer in C in Hindi

C में एक ऐसा पॉइंटर जो कि तब तक इनिशियलाइज़ नहीं किया जाता है जब तक कि इसके पहले इस्तेमाल को वाइल्ड पॉइंटर के नाम से नहीं जाना जाता। एक वाइल्ड पॉइंटर कुछ रैंडम मेमोरी लोकेशन की ओर इशारा करता है

Complex Pointers

Precedence: ऑपरेटर पूर्वता उस क्रम का वर्णन करता है जिसमें C अभिव्यक्ति पढ़ता है

Associativity: एक अभिव्यक्ति में समान वरीयता के आदेश ऑपरेटरों को लागू किया जाता है

हमें निम्न तालिका के अनुसार वरीयता और साहचर्य पर विचार करते हुए Pointer घोषणा को प्राथमिकता देने की आवश्यकता है।

(): यह ऑपरेटर ब्रैकेट ऑपरेटर या फ़ंक्शन ऑपरेटर के रूप में व्यवहार करता है।

[]: यह ऑपरेटर सरणी सदस्यता ऑपरेटर के रूप में व्यवहार करता है।

*: यह ऑपरेटर pointer ऑपरेटर के रूप में व्यवहार करता है, गुणन ऑपरेटर के रूप में नहीं।

Identifie: यह एक ऑपरेटर नहीं है, लेकिन यह सूचक चर का नाम है। तुम हमेशा पाओगे

सूचक के नाम को प्राथमिकता दी जाएगी।

Data type: यह भी एक ऑपरेटर नहीं है। डेटा प्रकारों में संशोधक भी शामिल हैं (जैसे कि हस्ताक्षरित int,

लंबी डबल आदि)

Near Pointer in C in Hindi

    पॉइंटर जो केवल 64KB डेटा सेगमेंट या सेगमेंट नंबर 8 को इंगित कर सकता है, को पॉइंटर के पास के रूप में जाना जाता है।

    पास है कि पॉइंटर डेटा सेगमेंट से परे नहीं पहुंच सकता है जैसे ग्राफिक्स वीडियो मेमोरी, टेक्स्ट वीडियो मेमोरी आदि। पास पॉइंटर का आकार दो बाइट है। कीवर्ड की मदद से, हम किसी भी पॉइंटर को पॉइंटर के पास बना सकते हैं।

Far Pointer in C

    Pointer जो रैम की पूरी निवास मेमोरी को इंगित या एक्सेस कर सकता है, अर्थात, जो सभी 16 खंडों तक पहुंच सकता है, इसे दूर सूचक के रूप में जाना जाता है।

    सुदूर सूचक का आकार 4 बाइट या 32 बिट है।

Huge Pointer in C in Hindi

    Pointer जो रैम की संपूर्ण निवास मेमोरी को इंगित या एक्सेस कर सकता है यानी जो सभी 16 खंडों तक पहुंच सकता है, एक विशाल सूचक के रूप में जाना जाता है।

    Huge Pointer का आकार 4 बाइट या 32 बिट है

Advantages and Disadvantages of Recursion In C In Hindi


Recursion program को elegant बनाता है। हालांकि, यदि प्रदर्शन महत्वपूर्ण है, तो बजाय लूप का उपयोग करें क्योंकि
Recursion आमतौर पर बहुत धीमी है।

यह कहा जा रहा है,
Recursion एक महत्वपूर्ण अवधारणा है। यह अक्सर  data structure and algorithms में उपयोग किया जाता है। उदाहरण के लिए, tree traversal जैसी समस्याओं में पुनरावृत्ति का उपयोग करना आम है।

Thursday, August 6, 2020

What is Pointer For C Programming With Example

August 06, 2020 0
What is Pointer For C Programming With Example


एक pointer एक variable है। अन्य variable की तरह, इसमें एक डेटा प्रकार और एक पहचानकर्ता है। हालाँकि, पॉइंटर्स का उपयोग एक ऐसे तरीके से किया जाता है जो मूल रूप से "सामान्य" variable का उपयोग करने के तरीके से अलग होता है, और हमें compiler को यह बताने के लिए एक asterisk (*) शामिल करना होगा कि एक variable को एक pointer के रूप में माना जाना चाहिए। यहाँ pointer घोषणा के दो उदाहरण हैं:

char *ptr1;
int *ptr2;

पहचानकर्ता को characters (जैसे "ptr") को शामिल करने की आवश्यकता नहीं होती है जो variable को एक संकेतक के रूप में चिह्नित करता है। 
 

Pointer in c in Hindi

  • यह specifically करता है। अधिक विशेष रूप से, यह दूसरे variable के डेटा, या ऐसे डेटा की ओर इशारा करता है जो मेमोरी में संग्रहीत होता है, लेकिन एक variable के साथ जुड़ा नहीं होता है।


  • हम आमतौर पर एक variable के बारे में सोचते हैं जो डेटा संग्रहीत करता है, और "डेटा" से हमारा मतलब है कि जानकारी का उपयोग एक अभिकलन में किया जाएगा, या किसी अन्य डिवाइस पर भेजा जाएगा, या एक कॉन्फ़िगरेशन रजिस्टर में लोड किया जाएगा, या एलसीडी पिक्सल को नियंत्रित करने के लिए उपयोग किया जाएगा। एक संकेतक एक variable है, लेकिन इस प्रकार के डेटा को संग्रहीत करने के लिए इसका उपयोग नहीं किया जाता है। बल्कि, एक पॉइंटर एक मेमोरी एड्रेस को स्टोर करता है।


  • शायद यह वह बिंदु है जिस पर कुछ लोग थोड़ा भ्रमित होने लगते हैं, और मुझे लगता है कि ऐसा इसलिए होता है क्योंकि प्रोसेसर की मेमोरी की भौतिक वास्तविकता से दृष्टि खोना आसान है। 


  • मेमोरी का एक ब्लॉक डिजिटल स्टोरेज कोशिकाओं का एक संग्रह है जो समूहों में व्यवस्थित होते हैं। 8-बिट प्रोसेसर के मामले में, भंडारण कोशिकाओं का प्रत्येक समूह एक बाइट से मेल खाता है। एक समूह को दूसरे से अलग करने का एकमात्र तरीका एक पते के माध्यम से है, और यह पता केवल एक संख्या है। 


पॉइंटर एक वैरिएबल होता है जो एक नंबर को स्टोर करता है, लेकिन इस नंबर को Address के रूप में व्याख्या किया जाता है - यानी, मान के रूप में जो मेमोरी में एक सटीक स्थान निर्दिष्ट करता है।

Example For Pointer in c in Hindi

आइए एक संक्षिप्त सादृश्य के साथ इस अवधारणा को सुदृढ़ करें। कल्पना कीजिए कि मैं एक पुस्तकालय में खड़ा हूं और कोई मेरे पास आता है और कहता है, "रिचर्ड द लायनहार्ट कौन है?" अगर मैं यह कहकर जवाब देता हूं, "1189 से 1199 तक इंग्लैंड के राजा," मैं एक सामान्य variable की तरह हूं। 

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

Understanding Pointer Data Types In Hindi


जैसा कि आपने ऊपर दिखाए गए उदाहरणों में देखा होगा, पॉइंटर्स एक डेटा प्रकार के साथ घोषित किए जाते हैं। शायद यह समझने की कठिनाई में योगदान देता है कि pointer वास्तव में क्या है। यदि कोई पॉइंटर केवल एक संख्या है जो मेमोरी लोकेशन के पते से मेल खाती है, तो विभिन्न डेटा प्रकार कैसे खेलते हैं? उदाहरण के लिए, यदि आपके माइक्रोकंट्रोलर में 4 kB RAM है, तो आप कभी भी डेटा प्रकार के char के साथ पॉइंटर कैसे दे सकते हैं? एक अहस्ताक्षरित चार का अधिकतम मूल्य 255 है; क्या होता है यदि यह पॉइंटर एक variable के लिए इंगित करना चाहिए जो मेमोरी एड्रेस 3000 पर स्थित है?

इस समस्या को समझने की कुंजी निम्नलिखित है: एक pointer का डेटा प्रकार इंगित नहीं करता है कि इसके मूल्य को संग्रहीत करने के लिए कितने बाइट्स का उपयोग किया जाता है। बल्कि, एक पॉइंटर के मूल्य को स्टोर करने के लिए उपयोग किए जाने वाले बाइट्स की संख्या, उन मेमोरी एड्रेस की संख्या से मेल खाती है, जिन्हें पॉइंटर के डेटा प्रकार की परवाह किए बिना एक्सेस किया जाना चाहिए। इसके अलावा, एक पॉइंटर का आकार कंपाइलर द्वारा निर्धारित किया जाता है और सीधे प्रोग्रामर को दिखाई नहीं देता है।

Pointer Data Types In Hindi
Pointer Data Types In Hindi


मान लें कि हम एक दयनीय माइक्रोकंट्रोलर का उपयोग कर रहे हैं जिसमें केवल 11 बाइट्स रैम है। 8-बिट संख्या द्वारा ऑफ़र किए गए मानों की सीमा 0 से 255 है, इसलिए इस डिवाइस में सभी संभावित मेमोरी स्थानों का प्रतिनिधित्व करने के लिए मेमोरी का एक बाइट पर्याप्त से अधिक है।

आरेख इस तथ्य पर जोर देता है कि जब तक घोषित एक variable भी एक-बाइट pointer के माध्यम से पहुँचा जा सकता है। नीला variable एक pointer है जो 32-बिट variable सेकंड्स_कंट का पता रखता है। यह variable स्मृति के चार बाइट्स का उपयोग करता है, लेकिन variable का पता (जो इस उदाहरण में कम से कम महत्वपूर्ण बाइट से मेल खाता है) हमेशा एक संख्या 0x0A के बराबर या उससे कम होगा। 


pointer को डेटा प्रकार के साथ लंबा घोषित किया जाना चाहिए क्योंकि यह लंबे variable के साथ संयोजन में उपयोग किया जाता है, लेकिन pointer स्वयं मेमोरी का एक बाइट खाता है, चार नहीं।

Saturday, May 9, 2020

bucket sort Algorithm In Hindi And Its Examples

May 09, 2020 0
bucket sort Algorithm In Hindi And Its Examples
This Chapter Will Help You To learn About bucket sort Algorithm In Hindi And Its Examples and Understand Its Programs and complexity.


bucket sort Algorithm In Hindi And Its Examples
bucket sort Algorithm In Hindi And Its Examples


bucket sort एक comparison sort algorithm है जो तत्वों को अलग-अलग बाल्टियों में विभाजित करके संचालित करता है और फिर इन बाल्टियों को व्यक्तिगत रूप से छांटता है। प्रत्येक बाल्टी को अलग-अलग छँटाई एल्गोरिथ्म का उपयोग करके या bucket sort Algorithm को recursively रूप से उपयोग करके व्यक्तिगत रूप से सॉर्ट किया जाता है। bucket sort मुख्य रूप से उपयोगी होता है जब इनपुट एक सीमा पर समान रूप से वितरित किया जाता है।

मान लें कि उनके सामने निम्नलिखित समस्या है:

एक को निचले और ऊपरी बाउंड के बीच समान रूप से झूठ बोलने वाले फ्लोटिंग पॉइंट पूर्णांक का एक बड़ा सरणी दिया गया है। इस सरणी को अब हल करने की आवश्यकता है। इस समस्या को हल करने का एक सरल तरीका यह होगा कि आप किसी अन्य सॉर्टिंग एल्गोरिथ्म जैसे मर्ज सॉर्ट, हीप सॉर्ट या क्विक सॉर्ट का उपयोग करें। हालांकि, ये algorithms O(N logN) की सबसे अच्छी स्थिति समय जटिलता की गारंटी देते हैं। हालांकि, bucket sort  का उपयोग करके, उपरोक्त कार्य को O(N) समय में पूरा किया जा सकता है। आइए इसे करीब से देखें।

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


void bucketSort(float[] a,int n)
{
    for(each floating integer 'x' in n)
    {
        insert x into bucket[n*x]; 
    }
    for(each bucket)
    {
        sort(bucket);
    }
}

Time Complexity in Bucket Sort

Time Complexity In Bucket Sort Algorithm Is O(n)

Bucket Sort Program In C/C++

// C++ program to sort an array using bucket sort
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
  
// Function to sort arr[] of size n using bucket sort
void bucketSort(float arr[], int n)
{
    // 1) Create n empty buckets
    vector<float> b[n];
     
    // 2) Put array elements in different buckets
    for (int i=0; i<n; i++)
    {
       int bi = n*arr[i]; // Index in bucket
       b[bi].push_back(arr[i]);
    }
  
    // 3) Sort individual buckets
    for (int i=0; i<n; i++)
       sort(b[i].begin(), b[i].end());
  
    // 4) Concatenate all buckets into arr[]
    int index = 0;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < b[i].size(); j++)
          arr[index++] = b[i][j];
}
  
/* Driver program to test above funtion */
int main()
{
    float arr[] = {0.897, 0.565, 0.656, 0.1234, 0.665, 0.3434};
    int n = sizeof(arr)/sizeof(arr[0]);
    bucketSort(arr, n);
  
    cout << "Sorted array is \n";
    for (int i=0; i<n; i++)
       cout << arr[i] << " ";
    return 0;
}

Bucket Sort Program In Python

# Python3 program to sort an array 
# using bucket sort 
def insertionSort(b):
    for i in range(1, len(b)):
        up = b[i]
        j = i - 1
        while j >=0 and b[j] > up: 
            b[j + 1] = b[j]
            j -= 1
        b[j + 1] = up     
    return b     
              
def bucketSort(x):
    arr = []
    slot_num = 10 # 10 means 10 slots, each
                  # slot's size is 0.1
    for i in range(slot_num):
        arr.append([])
          
    # Put array elements in different buckets 
    for j in x:
        index_b = int(slot_num * j) 
        arr[index_b].append(j)
      
    # Sort individual buckets 
    for i in range(slot_num):
        arr[i] = insertionSort(arr[i])
          
    # concatenate the result
    k = 0
    for i in range(slot_num):
        for j in range(len(arr[i])):
            x[k] = arr[i][j]
            k += 1
    return x
  
# Driver Code
x = [0.897, 0.565, 0.656,
     0.1234, 0.665, 0.3434
print("Sorted Array is")
print(bucketSort(x))


Also Learn: - Bubble Sort Algorithm And a sorting program in a different language