अजगर पर अपनी खुद की छँटाई को लागू करना कठिन नहीं हो सकता है। नीचे अवधारणा का प्रमाण दिया गया है:
import bisect
class sortlist:
def __init__(self, list):
self.list = list
self.sort()
def sort(self):
l = []
for i in range(len(self.list)):
bisect.insort(l, self.list[i])
self.list = l
self.len = i
def insert(self, value):
bisect.insort(self.list, value)
self.len += 1
def show(self):
print self.list
def search(self,value):
left = bisect.bisect_left(self.list, value)
if abs(self.list[min([left,self.len-1])] - value) >= abs(self.list[left-1] - value):
return self.list[left-1]
else:
return self.list[left]
list = [101, 3, 10, 14, 23, 86, 44, 45, 45, 50, 66, 95, 17, 77, 79, 84, 85, 91, 73]
slist = sortlist(list)
slist.show()
slist.insert(99)
slist.show()
print slist.search(100000000)
print slist.search(0)
print slist.search(56.7)
========= परिणाम ============
[3, 10, 14, 17, 23, 44, 45, 45, 50, 66, 73, 77, 79, 84, 85, 86, 91, 95, 101]
[3, 10, 14, 17, 23, 44, 45, 45, 50, 66, 73, 77, 79, 84, 85, 86, 91, 95, 99, 101]
101
3
50
memcpy
अभी भी एक O (n) ऑपरेशन है। मुझे यकीन नहीं है कि पायथन उपकरणों को कैसे सूचीबद्ध करता है , लेकिन मेरी शर्त यह है कि वे सन्निहित स्मृति में संग्रहीत हैं (निश्चित रूप से लिंक की गई सूची के रूप में नहीं)। यदि वह वास्तव में ऐसा है, तोbisect
आपके द्वारा प्रदर्शित प्रविष्टि का जटिलता O (n) होगा ।