सबसे आसान सी में ऑनलाइन छाँटे गए डेटा संरचना को लागू करने के

वोट
1

मैं एक बड़ी डेटा स्रोत लगभग 8 लाख प्रविष्टियों को स्कैन कर रहा हूँ, वर्तमान में, प्रविष्टि प्रति स्ट्रिंग है, जो मैं वर्णमाला के क्रम में चाहते पर निकालने।

Currenlty मैं उन्हें एक सरणी में तो तरह एक सूचकांक उन्हें डाल का उपयोग कर qsort()जो ठीक काम करता है।

लेकिन जिज्ञासा से बाहर मैं बजाय एक डेटा संरचना है कि उन्हें वर्णमाला के क्रम में रखता है के रूप में मैं उन्हें डेटा स्रोत से स्कैन में प्रत्येक स्ट्रिंग डालने की सोच रहा हूँ आंशिक रूप से एक emlplementing के अनुभव के लिए, आंशिक रूप से, क्योंकि यह के लिए प्रतीक्षा के बिना तेजी से महसूस होगा प्रकार स्कैन पूरा कर लिया है के बाद पूरा करने के लिए (-:

क्या डेटा संरचना सबसे सी में लागू करने के लिए सरल हो सकता है?

अद्यतन करें

स्पष्ट करने के लिए, केवल संचालन मैं प्रदर्शन करने की जरूरत है एक आइटम डालने और सूचकांक इसके पूर्ण होने पर, जिसके द्वारा मैं मूल क्रम में प्रत्येक आइटम के लिए इसका मतलब यह एक पूर्णांक है ताकि इसे छँटाई के बाद में है का प्रतिनिधित्व डंप डंप कर रहे हैं।

सारांश

  • सबसे आसान लागू करने के लिए द्विआधारी खोज के पेड़ हैं।
  • स्व संतुलन द्विआधारी पेड़ काफी बेहतर है, लेकिन लागू करने के लिए nontrivial हैं।
  • निवेशन iteratively किया जा सकता है, लेकिन जब दोनों ने किया पेड़ को हटाने के लिए परिणाम और बाद के क्रम ट्रेवर्सल डंपिंग के लिए इन-आदेश ट्रावर्सल या तो प्रत्यावर्तन या एक स्पष्ट ढेर की आवश्यकता है।
  • संतुलन को लागू करने के बिना, आदेश दिया इनपुट के रन पतित सबसे खराब स्थिति है जो एक लिंक्ड सूची है का परिणाम देगा। यह गहरी पेड़ जो गंभीर रूप से डालने के आपरेशन की गति को प्रभावित करता है।
  • इनपुट फेरबदल थोड़ा को तोड़ सकता है इनपुट काफी आदेश दिया और कहा कि संतुलन लागू करना आसान है।
11/04/2011 को 18:23
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


4 जवाब

वोट
3

द्विआधारी खोज के पेड़। या आत्म संतुलन खोज पेड़। लेकिन उन एक ठीक से लागू गतिशील सरणी की तुलना में तेजी होने की उम्मीद नहीं है, के बाद से सरणियों है ज्यादा सूचक संरचनाओं से संदर्भ के बेहतर इलाके। इसके अलावा, असंतुलित BSTs "रैखिक जाना" सकता है, तो अपने पूरे एल्गोरिथ्म हे (हो जाता है n ²), बस quicksort की तरह।

11/04/2011 को 18:24
का स्रोत उपयोगकर्ता

वोट
0

आप और एक तेजी से छँटाई एल्गोरिथ्म जैसे हमारे Timsort या एक nlog (एन) सबसे खराब स्थिति के साथ अन्य छँटाई एल्गोरिथम को लागू कर सकता है सिर्फ तेजी से करता है, तो सूची सॉर्ट हो जाता है इसके बाद से बाइनरी खोज का उपयोग कर यह खोज करते हैं।

11/04/2011 को 18:29
का स्रोत उपयोगकर्ता

वोट
0

आप Trie आंकड़ा संरचना पर एक नज़र रखना चाहिए wikilink मुझे लगता है कि यह आप क्या चाहते हैं में काम करेगा

18/04/2011 को 08:20
का स्रोत उपयोगकर्ता

वोट
2

आप पहले से ही इष्टतम दृष्टिकोण का उपयोग कर रहे हैं। अंत में क्रमबद्ध ज्यादा एक ऑनलाइन छाँटे गए डेटा संरचना को बनाए रखने की तुलना में सस्ता हो जाएगा। आप एक rb पेड़ के साथ एक ही ओ (logn) प्राप्त कर सकते हैं लेकिन लगातार ज्यादा बदतर हो जाएगा, महत्वपूर्ण अंतरिक्ष भूमि के ऊपर उल्लेख करने के लिए नहीं।

जिसके अनुसार, AVL पेड़ और rb-पेड़ बहुत करता है, तो आप हटाए जाने के समर्थन की जरूरत नहीं है लागू करने के लिए सरल कर रहे हैं। वामपंथी झुकाव rb पेड़ कोड के 50 या तो लाइनों में फिट कर सकते हैं। देखें http://www.cs.princeton.edu/~rs/talks/LLRB/ (Sedgewick द्वारा)

19/04/2011 को 05:31
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more