मैं दो इनपुट सरणियों एक्स है और वाई मैं जो सरणी वाई में सर्वोच्च आवृत्ति के साथ होता है सरणी एक्स के उस तत्व लौटना चाहतेसबसे तेजी से एल्गोरिथ्म एक सरणी में सबसे अधिक आवृत्ति के साथ एक तत्व को खोजने के लिए क्या है
ऐसा करने का बेवकूफ तरीका यह है कि सरणी एक्स के प्रत्येक तत्व एक्स के लिए, मैं रैखिक रूप से इसकी घटनाओं की संख्या के लिए सरणी वाई खोजता हूं और उसके बाद उस तत्व x को वापस करता हूं जिसमें उच्चतम आवृत्ति होती है। यहाँ छद्म एल्गोरिथ्म है:
max_frequency = 0
max_x = -1 // -1 indicates no element found
For each x in X
frequency = 0
For each y in Y
if y == x
frequency++
End For
If frequency > max_frequency
max_frequency = frequency
max_x = x
End If
End For
return max_x
दो नेस्टेड छोरों देखते हैं, इस एल्गोरिथ्म के लिए समय जटिलता हे होगा (एन^2)। क्या मैं इसे ओ (nlogn) या तेज़ में कर सकता हूं?
दो या अधिक आयामों के साथ किसी समस्या पर चर्चा करते समय, आमतौर पर प्रत्येक के लिए एक चर का उपयोग करके जटिलता पर चर्चा करना एक अच्छा विचार है। चूंकि 'एक्स <वाई', हम 'वाई = एन' ले सकते हैं और एक वर्गबद्ध जटिलता प्राप्त कर सकते हैं। व्यावहारिक रूप से बोलते हुए, 'ओ (एक्स * वाई)' एक बेहतर बयान है कि वास्तव में वास्तव में कितना काम हो रहा है। – phs