कम्प्युटरकार्यक्रम

बाइनरी खोज - सजिलो तरिका को एक सरणी तत्व फेला पार्न

एकदम अक्सर, प्रोग्रामर, पनि शुरुआती, त्यहाँ एउटा विशिष्ट नम्बर पर्छ संख्या एक सेट छ भन्ने तथ्यलाई सामना गर्नुपरेको थियो। यो संग्रह एक एरे भनिन्छ छ। र यो वस्तुहरू फेला पार्न, त्यहाँ तरिका को एक असंख्य छन्। तर सबैभन्दा सरल दाँया मा एक बाइनरी खोज गर्न सकिँदैन। के यो विधि छ? र कसरी बाइनरी खोज लागू गर्न? पास्कल यस्तो कार्यक्रम को संगठनको लागि सजिलो वातावरण छ, त्यसैले हामी अध्ययन गर्न यसलाई प्रयोग गर्ने छौँ।

पहिलो, विश्लेषण, के यो विधि को लाभ हो, यो त हामी बुझ्न सक्छौं छ, विषयको अध्ययन मा बिन्दु के हो। त्यसैले केही फेला पार्न आवश्यक छ, जो कम्तिमा 100000000 तत्व, एक आयाम एउटा एरे गरौं। निस्सन्देह, यो समस्या सजिलै जो हामी कि एरे छन् सबैलाई साथ आवश्यक तत्व तुलना हुनेछ चक्र प्रयोग गर्दै एक सरल रैखिक खोज, द्वारा हल गर्न सकिन्छ। समस्या यो विचार को कार्यान्वयन पनि धेरै समय लाग्नेछ छ। धेरै उपचार, र मुख्य पाठ तीन लाइनहरु साधारण पास्कल कार्यक्रम, तपाईंले यो नोटिस छैन, तर हामी शाखा र राम्रो कार्यक्षमता को एक ठूलो संख्या संग अधिक वा कम ठूलो परियोजनाहरू आउन गर्दा, कार्यक्रम पनि लामो समय को लागि लोड गर्न तयार हुनेछ। विशेष गरी कम्प्युटर कमजोर प्रदर्शन हो भने। त्यसैले, कम्तिमा दुई पटक खोज समय कम जो एक बाइनरी खोज, त्यहाँ छ।

त्यसैले, यो विधि को काम सिद्धान्त के हो? तुरुन्तै बाइनरी खोज कुनै पनि एरे छैन, तर संख्या मात्र क्रमबद्ध सेट मा काम गर्दछ भनेर भन्न हुँदैन। यस श्रेणीको प्रत्येक चरण लिएको मध्य तत्व मा (तत्व को संख्या अर्थ)। आवश्यक छ भने नम्बर भन्दा ठूलो छ औसत, त्यसपछि सबै बाँकी छ, कि औसत सेल भन्दा कम छ, रद्ध गरिएको छ र त्यहाँ हेर्न सकिँदैन। Conversely, यदि औसत भन्दा कम - सही ती संख्या बीच, तपाईं खोजी गर्न सक्नुहुन्छ। त्यसपछि नयाँ खोज क्षेत्र, जहाँ पहिलो तत्व सम्पूर्ण श्रेणीको बीचमा तत्व, र अन्तिम र अन्तिम हुनेछ चयन गर्नुहोस्। नयाँ क्षेत्र औसत नम्बर हो भनेर सबै खण्ड, (अन्तिम तत्व + सम्पूर्ण श्रेणीको बीचमा तत्व) / 2 को ¼ हुनेछ। फेरि, एउटै सञ्चालन गरिन्छ - यो श्रेणीको औसत नम्बर एक तुलना। लक्षित मूल्य औसत भन्दा कम छ भने, हामी सही पक्ष अस्वीकार, र पनि अहिले यो बीचमा तत्व चाहेको छैन सम्म, अर्को गर्न।

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

यो नाम "massiv" अन्तर्गत घन्टा 1 को एरे छ, एक चर खोज तल्लो सीमा संकेत, "niz" भनिन्छ, माथिल्लो सीमा, "verh", औसत खोज शब्द भनिन्छ - "sredn"; र आवश्यक नम्बर - "ISK"।

त्यसैले, पहिले हामी दायरा खोज को माथिल्लो र तल्लो सीमा नियुक्त:

niz: = 1;
verh: = घन्टा + 1;

त्यसपछि चक्र संगठित "तल माथिल्लो सीमा भन्दा कम छ सम्म":

जबकि niz सुरु

प्रत्येक चरण मा, हामी खण्ड 2 विभाजित:

sredn: = (niz + verh) div 2; {किनभने शेष बिना भाग, समारोह div प्रयोग}

समीक्षा प्रत्येक समय। किनभने वस्तु पहिले नै मध्यम चाहेको छ भने पाइएको छ, चक्र अवरोध:

іf sredn = ISK त्यसपछि तोड;

यस श्रेणीको बीचमा तत्व चाहेको भन्दा बढी, बायाँ तर्फ छोड्न भने, छ, औसत माथिल्लो सीमा नियुक्त तत्व:

यदि massiv [sredn]> ISK त्यसपछि verh: = sredn;

र विपरीत यदि, यो तल्लोसीमा बनाउँछ:

अरू niz: = sredn;
अन्त;

त्यो कार्यक्रम मा हुनेछ सबै छ।

हामीलाई यो अभ्यास मा बाइनरी विधि हेर्न कसरी विचार गरौं। 1, 3, 5, 7, 10, 12, 18 र यो संख्या 12 खोज्न हुनेछ: यो एरे विचार गर्नुहोस्।

कुल हामी 7 तत्व छ, त्यसैले चौथो मध्यम, मान 7 हुनेछ।

1 3 5 7 10 12 18

अधिक 12, 7, 1.3 र 5 तत्व भएकोले हामी खारेज गर्न सक्नुहुन्छ। त्यसपछि हामी नम्बर 4 भयो, 4/2 कुनै अवशेषहरु 2. त्यसैले, नयाँ तत्त्व 10 को एक औसत हुनेछ छ।

7 10 12 18

12 भन्दा 10 ठूलो भएकोले, हामीले 7 मात्र रहन्छ 10, 12 र 18 खारेज।

यहाँ, बीचमा तत्व पहिले नै 12 छ, यो आवश्यक नम्बर हो। यो कार्य पूरा भएको छ - नम्बर 12 फेला परेन।

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ne.atomiyme.com. Theme powered by WordPress.