निर्धारित करने के लिए भोली एल्गोरिथ्म B से A:
के लिये k=1,…,nका मान निर्धारित करें B(k) प्रत्येक की तुलना करके A(i) सेवा A(k) के लिये
i=1,…,k और उन लोगों की गिनती करना जो संतुष्ट हैं A(i)<A(k)।
यह एल्गोरिथम तुलना करता है A(1) अन्य सभी को (n−1 बार), A(2) सेवा n−2 दूसरों, आदि की तुलना की कुल संख्या है (n−1)(n−2)2। लेकिन यह सबसे अच्छा नहीं है जो हम कर सकते हैं। उदाहरण के लिए, देख रहे हैंB(n), हमें कोई तुलना नहीं करनी है! B(n)=A(n)−1क्योंकि यह पहला है n प्राकृतिक संख्याएं, और इसकी गारंटी है (परमीशन की परवाह किए बिना) कि n−1कम प्राकृतिक संख्याएँ होंगी। व्हाट अबाउटB(n−1)? बजाय जाँच केA(1) के माध्यम से A(n−2), हम सिर्फ जाँच कर सकते हैं A(n)। अर्थात्:
के लिये k=1,…,n2, ऊपर एल्गोरिथ्म का उपयोग करें; के लिये
k=n2,…,n रिवर्स एल्गोरिथ्म का उपयोग करें: निर्धारित करें B(k) शुरू में इसे सेट करके A(n)−1 और फिर घटाना 1 प्रत्येक प्रविष्टि के लिए A(i) के लिये i=k+1,…,n से कम है A(k)।
यह ले जाएगा 2×(n2−1)(n2−2)2=(n−2)(n−4)4 कदम, जो अभी भी है O(n2)। निर्माण में भी ध्यान देंA से B, अगर B(n)=A(n)−1 फिर A(n)=B(n)+1।
लेकिन अब और अधिक चालाकी के लिए। यदि हमें कुछ अतिरिक्त स्थान या सॉर्ट करने की अनुमति है, तो हम संख्याओं को सॉर्ट कर सकते हैं, क्योंकि हम उनकी तुलना कर रहे हैं। उदाहरण के लिए:
∣∣∣∣ASB8904803701407332219166655∣∣∣∣
उन सभी की जांच करने के बजाय (या उन्हें क्रम में जांचना), हम प्रत्येक को निर्धारित करने के लिए द्विआधारी खोज का उपयोग कर सकते हैं B(k)। हालाँकि, अभी भी छँटाई में समय लगता हैO(nlogn)।