हैशटेबल आधारित समाधान
निश्चित नहीं है कि हैशटेबल जटिलता क्यों बनाता है Ω (n2) अगर nवर्णों की संख्या है (शब्द नहीं)।
यदि आप दस्तावेज़ में प्रत्येक वर्ण के माध्यम से पुनरावृत्ति करते हैं और जैसा कि आप पुनरावृत्ति कर रहे हैं, शब्द के हैशकोड की गणना करें, तो आप गुजर गए होंगे nपात्र। यही है, जैसे ही एक पत्र का सामना होता है, शब्द शुरू होता है, इसलिए शब्द समाप्त होने तक हैश की गणना करना शुरू करें (विराम चिह्न के लिए कुछ विशेष मामले हैं लेकिन वे जटिलता को प्रभावित नहीं करते हैं)। हर शब्द के लिए, एक बार हैश की गणना करने के बाद, इसे हैशटेबल में जोड़ें। यह हर शब्द पर दो बार जाने से बचने के लिए है, यानी पहले दस्तावेज़ के माध्यम से शब्दों को खोजने के लिए पुनरावृति करना और फिर उन्हें हैशटेबल में डालना, हालांकि उस मामले में जटिलता भी हो सकती हैΩ ( एन )।
हैशटेबल में टकराव निश्चित रूप से एक समस्या है, और यह निर्भर करता है कि मूल हैशटेबल कितना बड़ा था और हैशिंग एल्गोरिथ्म कितना अच्छा है, एक करीब पहुंच सकता है ओ ( 1 ) प्रविष्टि के लिए और मायने रखता है और इस प्रकार ओ ( एन )एल्गोरिथ्म के लिए, हालांकि स्मृति की कीमत पर। हालाँकि, मैं अभी भी सराहना नहीं कर सकता कि कैसे सबसे खराब मामला होने का दावा किया जा सकता हैओ (n2) अगर n वर्णों की संख्या है।
धारणा है कि वर्णों की संख्या के संबंध में हैशिंग एल्गोरिथ्म समय में रैखिक है।
मूलांक सॉर्ट आधारित समाधान
वैकल्पिक रूप से, अंग्रेजी को मानते हुए, क्योंकि शब्दों की लंबाई अच्छी तरह से ज्ञात है, मैं इसके बजाय एक ग्रिड बनाऊंगा और मूलांक लागू करूंगा जो है ओ ( के एन)) कहाँ पे क अंग्रेजी भाषा में एक शब्द की अधिकतम लंबाई होगी, और एनशब्दों की कुल संख्या है। दिया हुआn दस्तावेज़ में वर्णों की संख्या है, और क एक स्थिर, asymptotically यह मात्रा है ओ ( एन )।
अब प्रत्येक शब्द की आवृत्ति गिनें। चूंकि शब्द छांटे गए हैं, हम प्रत्येक शब्द की तुलना उसके पूर्ववर्ती शब्द से करेंगे, यह देखने के लिए कि क्या यह एक ही है या अलग है। यदि यह समान है, तो हम शब्द को हटाते हैं और पिछले में एक गिनती जोड़ते हैं। यदि अलग है, तो बस गिनती 1 बनाएं और आगे बढ़ें। ये आवश्यक2 एन तुलना कहाँ n वर्णों की संख्या है, और इस प्रकार ओ ( एन)) एक पूरे के रूप में जटिलता में।
अंग्रेजी के शीर्ष कुछ सबसे लंबे शब्द हास्यास्पद रूप से लंबे होते हैं , लेकिन तब व्यक्ति शब्द की लंबाई को उचित संख्या (जैसे कि 30 या उससे छोटे) पर काट सकता है और ट्रंकट शब्दों को त्रुटि का मार्जिन स्वीकार कर सकता है जो इसके साथ आ सकते हैं।