ओ (n1 * लॉग (एन 2)) औसत स्थिति है भले ही हम 2 मर्ज एक BST में किसी भी अवर्गीकृत सूची है। हम तथ्य यह है कि सूची क्रमबद्ध सूची या एक BST है का उपयोग नहीं कर रहे हैं।
मेरे हिसाब से देता है एक BST मान n1 तत्व है और अन्य n2 तत्व है। अब किसी क्रमित सरणी ओ (n1) में सूची एल 1 में एक BST परिवर्तित।
मर्ज कर दिया गया BST (BST, सरणी)
अगर (Array.size == 0) वापसी BST अगर (Array.size == 1) BST में तत्व सम्मिलित। BST वापसी;
सरणी जिसका बाईं तत्व <BST.rootnode और सही तत्व> = BST.rootnode कहना सूचकांक में सूचकांक का पता लगाएं। अगर (BST.rootNode.leftNode == नल) // यानी कोई बाईं नोड किसी और {0 के सूचकांक से सभी सरणी डालने में BST के लिए छोड़ दिया और} {विलय BST (BST.leftNode, सरणी {0 सूचकांक})}
अगर (BST.rootNode.rightNode == नल) // यानी कोई सही नोड else {BST के अधिकार में Array.size के सूचकांक से सभी सरणी सम्मिलित} {विलय BST (BST.rightNode, सरणी {सूचकांक Array.size करने} )}
BST लौट आते हैं।
इस एल्गोरिथ्म हर बार जब हम सरणी और subproblem संभाल करने BST विभाजन कर रहे हैं के रूप में << ओ (n1 * लॉग (एन 2)) की तुलना में समय लगेगा।