পাইথনে আপনার নিজস্ব বাছাই করা তালিকাটি কার্যকর করা কঠিন নাও হতে পারে। নীচে ধারণার প্রমাণ:
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
এখনও একটি ও (এন) অপারেশন। আমি জানি না পাইথন ঠিক কীভাবে তালিকা প্রয়োগ করে তবে আমার বাজিটি হ'ল এগুলি মঞ্জুরিযুক্ত স্মৃতিতে (অবশ্যই লিঙ্কযুক্ত তালিকার মতো নয়)। যদি তা প্রকৃতপক্ষে হয় তবে আপনি যে সন্নিবেশটিbisect
প্রদর্শন করেছেন তা ব্যবহারের জটিলতা ও (এন) হবে ।