एल्गोरिदम को छांटने में स्थिरता क्या है और यह महत्वपूर्ण क्यों है?


292

मैं बहुत उत्सुक हूं, एल्गोरिदम को छांटने में स्थिरता क्यों महत्वपूर्ण है या नहीं है?


2
समानांतर प्रयोजनों के लिए? उदाहरण: मर्ज सॉर्ट स्थिर है और इसे अच्छी तरह से समानांतर किया जा सकता है और इसलिए यह क्विकॉर्ट है।
डेर्थवेडर

13
क्लासिक क्विकॉर्ट अस्थिर है
कोंस्टेंटिन

9
स्थिर प्रकार का IBM (Insertion, Bubble, Merge)
अहंकार

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

जवाबों:


371

एक सॉर्टिंग एल्गोरिथ्म को स्थिर कहा जाता है यदि समान कुंजी वाले दो ऑब्जेक्ट सॉर्ट किए गए आउटपुट में उसी क्रम में दिखाई देते हैं जैसे वे इनपुट सरणी में सॉर्ट किए जाते हैं। कुछ छँटाई एल्गोरिदम प्रकृति द्वारा स्थिर हैं जैसे सम्मिलन प्रकार, मर्ज सॉर्ट, बबल सॉर्ट, आदि और कुछ सॉर्टिंग एल्गोरिदम नहीं हैं, जैसे हीप सॉर्ट, त्वरित सॉर्ट, आदि।

पृष्ठभूमि : "स्थिर" सॉर्टिंग एल्गोरिथ्म आइटम को क्रम में एक ही सॉर्टिंग कुंजी के साथ रखता है। मान लें कि हमारे पास 5-अक्षर शब्दों की एक सूची है:

peach
straw
apple
spork

यदि हम प्रत्येक शब्द के पहले अक्षर से सूची को छाँटते हैं तो एक स्थिर-छँटनी होती है:

apple
peach
straw
spork

एक अस्थिर सॉर्ट एल्गोरिथ्म में, strawया sporkइंटरचेंज किया जा सकता है, लेकिन एक स्थिर एक ही में, वे एक ही सापेक्ष स्थिति में रहते हैं (अर्थात, चूंकि इनपुट में strawपहले दिखाई देता है spork, यह sporkआउटपुट में भी पहले प्रकट होता है )।

हम इस एल्गोरिथ्म का उपयोग करके शब्दों की सूची को सॉर्ट कर सकते हैं: कॉलम 5 द्वारा स्थिर छँटाई, फिर 4, फिर 3, फिर 2, फिर 1. अंत में, इसे सही ढंग से क्रमबद्ध किया जाएगा। अपने आप को समझाओ। (वैसे, उस एल्गोरिदम को मूलांक सॉर्ट कहा जाता है)

अब आपके प्रश्न का उत्तर देने के लिए, मान लें कि हमारे पास पहले और अंतिम नामों की एक सूची है। हमें "पहले नाम से, फिर पहले से" सॉर्ट करने के लिए कहा जाता है। हम पहले नाम से पहले (स्थिर या अस्थिर), फिर अंतिम नाम से स्थिर क्रमबद्ध कर सकते थे। इन प्रकारों के बाद, सूची को मुख्य रूप से अंतिम नाम द्वारा क्रमबद्ध किया जाता है। हालाँकि, जहाँ अंतिम नाम समान हैं, पहले नाम क्रमबद्ध हैं।

आप एक ही फैशन में अस्थिर प्रकारों को ढेर नहीं कर सकते।


तो, ऐप्पल पीच स्पोर्ट स्ट्रॉ के सही छँटाई क्रम में शब्दों को बनाने के लिए किस प्रकार को बुलाया जाएगा? स्थिर सॉर्ट ने हमें ऐप्पल पीच स्ट्रॉ स्पॉर्क दिया, हालांकि
एसटी

2
@ user1416486: हम पहले अक्षर से ही छांट रहे हैं। उस धारणा के साथ, strawऔर sporkबराबर की तुलना करें। स्थिर सॉर्ट इनपुट के क्रम को बनाए रखेगा, जबकि अस्थिर सॉर्ट उस गारंटी को नहीं बनाता है। "सही" आवेदन पर निर्भर करता है। अधिकांश प्रोग्रामिंग भाषाओं में सॉर्ट फ़ंक्शन उपयोगकर्ता को कस्टम ऑर्डर करने वाले फ़ंक्शन की आपूर्ति करने देता है। यदि उपयोगकर्ता का कार्य अलग-अलग वस्तुओं को समान मानता है (उदाहरण के लिए पहला नाम, अलग-अलग अंतिम नाम), तो यह जानने में मदद करता है कि क्या मूल ऑर्डर संरक्षित होगा। एक वास्तविक दुनिया उदाहरण के लिए OCaml की सरणी सॉर्टिंग फ़ंक्शन देखें ।
जॉय एडम्स

3
मुझे लाइन समझ में नहीं आ रही है .. क्या सॉर्टिंग की ? आप यहाँ कुंजी से क्या मतलब है? कृपया कथन की व्याख्या करें .. तिल छँटाई कुंजी
saplingPro

2
@ सापलिंगप्रो: "सॉर्टिंग की" द्वारा, मेरा मतलब है कि आप जिस चीज को छांट रहे हैं। इसलिए जब पहले अक्षर से छँटाई होती है, तो प्रत्येक आइटम के लिए, उसकी "छँटाई कुंजी" उसका पहला अक्षर होता है।
जॉय एडम्स

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

55

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

स्थिर सॉर्टिंग एल्गोरिदम:

  • सम्मिलन सॉर्ट
  • मर्ज़ सॉर्ट
  • बबल शॅाट
  • टिम सॉर्ट
  • मतगणना क्रमबद्ध करें
  • ब्लॉक सॉर्ट करें
  • Quadsort
  • लाइब्रेरी सॉर्ट
  • कॉकटेल प्रकार के बरतन
  • सूक्ति क्रमबद्ध
  • अजीब-यहां तक ​​कि क्रमबद्ध

अस्थिर छँटाई एल्गोरिदम:

  • ढेर बनाएं और छांटें
  • चयन छांटना
  • खोल छाँटे
  • जल्दी से सुलझाएं
  • इंट्रोसर्ट (क्विकॉर्ट के अधीन)
  • पेड़ की छँटाई
  • साइकिल की तरह
  • Smoothsort
  • टूर्नामेंट क्रमबद्ध (हेसापोर्ट के अधीन)

यहां छवि विवरण दर्ज करें


2
आपके मूल्य नहीं के बराबर हैं। आप 9,7 और 9,8 की तुलना करते हैं लेकिन स्थिरता जांच के अनुसार आपको 9,7 या दोनों 9,8 जैसे समान मूल्यों की आवश्यकता होती है। और स्थिर एल्गोरिदम में समान मूल्यों की तुलना में समान आदेश दिए जाने चाहिए।
इरहुन

1
नहीं, स्थिरता की जांच करने के लिए आपके मूल्य समान होने चाहिए। मेरा मतलब है कि आप दो 9,7 का उपयोग करते हैं और इसे नोड ए और नोड बी पर नाम देते हैं। यदि हर तरह का ऑपरेशन ऑर्डर ए, बी (इसके बजाय वे समान हैं) समझते हैं कि सॉर्टिंग एल्गोरिदम स्थिर है (मर्ज सॉर्ट की तरह)। यदि A, B क्रम बदल जाता है जब उन्हें कई बार क्रमबद्ध किया जाता है (1। सॉर्ट A, B तब B, A फिर A, B इत्यादि), समझें कि एल्गोरिथ्म सॉर्ट करना अस्थिर है (क्विक सॉर्ट की तरह) @snr
erhun

@ एसएनआर [९, ६] इनपुट ऐरे में मौजूद नहीं है। मुझे लगता है कि अंतिम सरणी पट्टी में आपका मतलब [9, 8] था।
उस्मान

4
@ मेरा मानना ​​है कि वह केवल पहले नंबर (अल्पविराम से पहले वाला) को छांट रहा है और दूसरे नंबर का उपयोग आपके लिए एक संदर्भ के रूप में कर रहा है, यह देखने के लिए कि पहले 9 दूसरे 9 से अलग है
टियागो

20

सॉर्टिंग स्थिरता का अर्थ है कि एक ही कुंजी के साथ रिकॉर्ड सॉर्ट से पहले और बाद में अपने सापेक्ष क्रम को बनाए रखते हैं।

तो स्थिरता मायने रखती है, और केवल अगर, जिस समस्या को आप हल कर रहे हैं, उस सापेक्ष क्रम को बनाए रखने की आवश्यकता है।

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

यदि आपको स्थिरता की आवश्यकता है, तो यह अधिक जटिल है। स्थिर एल्गोरिदम में अस्थिर एल्गोरिदम की तुलना में अधिक बड़े-ओ सीपीयू और / या मेमोरी का उपयोग होता है। इसलिए जब आपके पास एक बड़ा डेटा सेट होता है, तो आपको सीपीयू या मेमोरी को हराकर चुनना होगा। यदि आप CPU और मेमोरी दोनों पर विवश हैं, तो आपको एक समस्या है। एक अच्छा समझौता स्थिर एल्गोरिथ्म एक बाइनरी ट्री सॉर्ट है; विकिपीडिया लेख एक दयनीयता से आसान सी ++ एसटीएल के आधार पर कार्यान्वयन है।

आप प्रत्येक रिकॉर्ड के लिए अंतिम रिकॉर्ड संख्या के रूप में मूल रिकॉर्ड संख्या जोड़कर एक स्थिर एक में एक अस्थिर एल्गोरिथ्म बना सकते हैं।


1
मर्ज सॉर्ट जैसे स्थिर एल्गोरिदम में एक ही ओ (NlogN) जटिलता है जो क्विकॉर्ट के रूप में है; प्रयास पर लगातार गुणक बड़ा है, यद्यपि।
जोनाथन लेफ़लर

हां, और मर्ज सॉर्ट पर मेमोरी का उपयोग ओ (एन) है, जबकि क्विकॉर्ट पर यह ओ (लॉग एन) है। Quicksort का उल्लेख करने का कारण यह है कि qsort () एक C मानक पुस्तकालय दिनचर्या है, इसलिए यह आसानी से उपलब्ध है।
बॉब मर्फी

1
सर्वश्रेष्ठ समग्र उत्तर IMHO। दूसरों में उल्लिखित बहु-कुंजी तकनीक दिलचस्प है, लेकिन ओवररेटेड है; यह लागू करने के लिए सरल है, लेकिन स्पष्ट विकल्पों की तुलना में बहुत धीमा है (बस एक बहु-कुंजी तुलना के साथ एक प्रकार का उपयोग करें; या पहली कुंजी द्वारा क्रमबद्ध करें फिर डुप्लिकेट के साथ किसी भी उदात्त को पहचानें और सॉर्ट करें)। तथ्य यह है कि स्थिर सॉर्ट एक अनुमानित परिणाम पैदा करता है कुछ ऐप्स में महत्वपूर्ण हो सकता है। विशेष रूप से यदि आपके पास दो इनपुट सूचियाँ हैं A, B जो सूची B को छोड़कर समान हैं एक अतिरिक्त प्रविष्टि है, तो एक स्थिर प्रकार के लिए आउटपुट B को छोड़कर समान है, जो एक ही अतिरिक्त प्रविष्टि है। और अंतिम pgph के लिए +1।
greggo

16

यह निर्भर करता है कि आप क्या करते हैं।

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


4
मुझे लगता है कि आपका मतलब "अंतिम और दिया गया नाम" है। उपनाम आमतौर पर अंतिम नाम है।
बेकन बिट्स

14

स्थिरता के महत्वपूर्ण होने के कुछ कारण हो सकते हैं। एक यह है कि, यदि दो रिकॉर्ड्स को स्वैप करने की आवश्यकता नहीं है, तो उन्हें स्वैप करके आप एक मेमोरी अपडेट का कारण बन सकते हैं, एक पृष्ठ गंदा है, और डिस्क (या किसी अन्य धीमे माध्यम) को फिर से लिखना होगा।


स्थिरता के साथ रिकॉर्ड स्वैपिंग का क्या करना है?
user1683793

4

एक सॉर्टिंग एल्गोरिथ्म को स्थिर कहा जाता है यदि समान कुंजी के साथ दो ऑब्जेक्ट सॉर्ट किए गए आउटपुट में एक ही क्रम में दिखाई देते हैं जैसा कि वे इनपुट असमान सरणी में दिखाई देते हैं। कुछ छँटाई एल्गोरिदम प्रकृति द्वारा स्थिर हैं जैसे सम्मिलन प्रकार, मर्ज सॉर्ट, बबल सॉर्ट, आदि और कुछ सॉर्टिंग एल्गोरिदम नहीं हैं, जैसे हीप सॉर्ट, त्वरित सॉर्ट, आदि।

हालांकि, किसी भी प्रकार की छंटनी वाली एल्गो जो स्थिर नहीं है, स्थिर होने के लिए संशोधित की जा सकती है। इसे स्थिर बनाने के लिए अलग-अलग तरह के अहम् तरीके हो सकते हैं, लेकिन सामान्य तौर पर, किसी भी तरह की तुलना पर आधारित एल्गोरिथ्म जो प्रकृति द्वारा स्थिर नहीं है, को कुंजी तुलनात्मक ऑपरेशन में बदलकर स्थिर किया जा सकता है ताकि दो कुंजी की तुलना स्थिति को एक मानें समान कुंजी के साथ वस्तुओं के लिए कारक।

संदर्भ: http://www.math.uic.edu/~leon/cs-mcs401-s08/handouts/stability.pdf http://en.wikipedia.org/wiki/Sorting_algorithm#Stability


3

मुझे पता है कि इसके लिए कई जवाब हैं, लेकिन मेरे लिए, रॉबर्ट हार्वे द्वारा इस जवाब को , और अधिक स्पष्ट रूप से संक्षेप में प्रस्तुत किया गया है:

एक स्थिर सॉर्ट वह है जो इनपुट सेट के मूल आदेश को संरक्षित करता है, जहां [अस्थिर] एल्गोरिथ्म दो या दो से अधिक वस्तुओं के बीच अंतर नहीं करता है।

स्रोत


1

यदि आप यह मान लेते हैं कि आप जो छँटाई कर रहे हैं वह केवल संख्याएँ हैं और केवल उनके मूल्य ही उन्हें पहचानते हैं / उनमें अंतर करते हैं (उदाहरण के लिए समान मूल्य वाले तत्व समान हैं), तो छँटाई का स्थिरता-मुद्दा व्यर्थ है।

हालाँकि, छँटाई में समान प्राथमिकता वाली वस्तुएँ अलग हो सकती हैं, और कभी-कभी उनका सापेक्ष क्रम सार्थक जानकारी होती है। इस स्थिति में, अस्थिर सॉर्ट समस्याओं को उत्पन्न करता है।

उदाहरण के लिए, आपके पास डेटा की एक सूची है जिसमें एक गेम में लेवल [L] के साथ भूलभुलैया को साफ करने के लिए सभी खिलाड़ियों की समय लागत [T] है। मान लीजिए, हमें खिलाड़ियों को रैंक करने की आवश्यकता है कि वे कितनी जल्दी भूलभुलैया को साफ करते हैं। हालांकि, एक अतिरिक्त नियम लागू होता है: उच्च स्तर के साथ भूलभुलैया को साफ करने वाले खिलाड़ियों के पास हमेशा उच्च रैंक होता है, भले ही समय कितना भी लंबा क्यों न हो।

बेशक, आप कुछ एल्गोरिथ्म के साथ एक वास्तविक संख्या [आर] के लिए युग्मित मान [टी, एल] को मैप करने का प्रयास कर सकते हैं जो नियमों का पालन करते हैं और फिर [आर] मान के साथ सभी खिलाड़ियों को रैंक करते हैं।

हालाँकि, यदि स्थिर छँटाई संभव है, तो आप पूरी सूची को [T] (पहले तेज़ खिलाड़ी) और फिर [L] द्वारा क्रमबद्ध कर सकते हैं। इस मामले में, आपके द्वारा साफ किए गए चक्रव्यूह के स्तर के आधार पर खिलाड़ियों के सापेक्ष क्रम में बदलाव नहीं किया जाएगा।

पुनश्च: बेशक दो बार सॉर्ट करने का तरीका विशेष समस्या का सबसे अच्छा समाधान नहीं है लेकिन पोस्टर के प्रश्न को समझाने के लिए यह पर्याप्त होना चाहिए।


0

स्थिर सॉर्ट हमेशा एक ही इनपुट पर एक ही समाधान (क्रमपरिवर्तन) लौटाएगा।

उदाहरण के लिए [2,1,2] क्रमबद्धता के रूप में स्थिर छँटाई का उपयोग करके क्रमबद्ध किया जाएगा [2,1,3] (पहले अनुक्रमणिका 2, फिर अनुक्रमणिका 3 फिर क्रमबद्ध आउटपुट में अनुक्रमणिका है) इसका मतलब है कि आउटपुट हमेशा उसी तरह से फेरबदल किया जाता है। अन्य गैर स्थिर, लेकिन अभी भी सही क्रमचय है [2,3,1]।

त्वरित प्रकार स्थिर नहीं है और समान तत्वों के बीच क्रमपरिवर्तन अंतर धुरी को चुनने के लिए एल्गोरिथ्म पर निर्भर करता है। कुछ कार्यान्वयन यादृच्छिक पर लगते हैं और एक ही एल्गोरिथ्म का उपयोग करके एक ही इनपुट पर विभिन्न क्रमिक पैदावार कर सकते हैं।

स्थिर सॉर्ट एल्गोरिथ्म आवश्यक निर्धारक है।


2
यही स्थिरता का मतलब नहीं है। देखें en.wikipedia.org/wiki/Sorting_algorithm#Stability
लुइस ओलिविएरा

मुझे गैर-स्थिर सॉर्ट की तुलना में अंतिम वाक्य को सही करना चाहिए, समान कार्यान्वयन के बीच भी अलग-अलग समाधान का उत्पादन कर सकता है, जहां कोई भी स्थिर सॉर्ट उसी समाधान को आउटपुट करता है।
लुका रहने

1
क्यों -1 क्या कोई इंगित कर सकता है कि यहाँ क्या गलत है? यह ऐसा नहीं है जो स्थिर रूप से है, लेकिन स्थिर संपत्ति किस प्रकार की है।
लूका रहने

क्या यह क्रम निर्धारक है या नहीं यह निर्धारित नहीं करता है कि यह स्थिर है। मैं एक अलग टाई-ब्रेकिंग व्यवहार (उदाहरण के लिए, गैर-कुंजी भागों को उप-कोड करके) को परिभाषित करके एक गैर-स्थिर नियतात्मक प्रकार एल्गोरिथ्म लिख सकता हूं। स्थिर क्रम विशेष रूप से तात्पर्य है कि संबंधों के क्रमबद्ध होने पर तत्वों के पूर्व-क्रमबद्ध सापेक्ष क्रम संरक्षित होते हैं। एक स्थिर प्रकार के आउटपुट का उदाहरण sort([(5,3),(1,5),(3,3),(1,3)], x) => [(1,5),(1,3),(3,3),(5,3)]:। मैं एक नियतात्मक प्रकार बना सकता हूं जो हमेशा (निर्धारक रूप से) आउटपुट करता है: [(1,3),(1,5),(3,3),(5,3)]लेकिन यह एक स्थिर प्रकार नहीं है।
काउबर्ट

@cowbert अधिक स्थिर संपत्ति के बारे में यह अच्छा विवरण है। यह कोई फर्क नहीं पड़ता कि चुड़ैल स्थिर सॉर्ट एल्गोरिथ्म है या कार्यान्वयन का उपयोग किया जाता है, हर बार एक ही परिणाम होगा। विभिन्न गैर स्थिर प्रकार के कार्यान्वयन के बीच ऐसी संपत्ति को बनाए रखना कठिन है।
लुका रहने

0

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

एक समान उदाहरण क्लासिक एक्सेल है, जो एक बार में 3 कॉलम तक सीमित है। 6 स्तंभों को क्रमबद्ध करने के लिए, एक छंटाई कम से कम 3 महत्वपूर्ण स्तंभों के साथ की जाती है, इसके बाद सबसे महत्वपूर्ण 3 स्तंभों के साथ।

एक स्थिर मूलांक सॉर्ट का एक क्लासिक उदाहरण एक कार्ड सॉर्टर है, जिसका उपयोग आधार 10 संख्यात्मक स्तंभों के क्षेत्र द्वारा सॉर्ट करने के लिए किया जाता है। कार्डों को कम से कम महत्वपूर्ण अंकों से सबसे महत्वपूर्ण अंकों में क्रमबद्ध किया जाता है। प्रत्येक पास पर, कार्ड का एक डेक पढ़ा जाता है और उस कॉलम में अंक के अनुसार 10 अलग-अलग डिब्बे में विभाजित किया जाता है। फिर कार्ड के 10 डिब्बे वापस इनपुट हॉपर में डाल दिए जाते हैं ("0" कार्ड पहले, "9" कार्ड अंतिम)। फिर एक और पास अगले कॉलम द्वारा किया जाता है, जब तक कि सभी कॉलम को सॉर्ट नहीं किया जाता है। वास्तविक कार्ड सॉर्टर्स में 10 से अधिक डिब्बे होते हैं क्योंकि एक कार्ड पर 12 ज़ोन होते हैं, एक कॉलम खाली हो सकता है, और एक गलत रीड बिन है। अक्षरों को क्रमबद्ध करने के लिए, प्रति कॉलम 2 पास आवश्यक हैं, अंक के लिए 1 पास, 12 11 ज़ोन के लिए 2 पास।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.