¸üÐÂʱ¼ä:2023Äê04ÔÂ28ÈÕ16ʱ51·Ö À´Ô´:ÀÖÓãµç¾º ä¯ÀÀ´ÎÊý:
²éÕÒËã·¨Ò²¿ÉÒÔ½ÐËÑË÷Ëã·¨¡£²éÕÒËã·¨¾ÍÊÇ´ÓÒ»¸öÓÐÐòÊýÁÐÖÐÕÒ³öÒ»¸öÌØ¶¨µÄÊý£¬³£ÓÃÓÚÅжÏij¸öÊýÊÇ·ñÔÚÊýÁÐÖУ¬»òÕßij¸öÊýÔÚÊýÁÐÖеÄλÖá£ÔÚ¼ÆËã»úÓ¦ÓÃÖУ¬²éÕÒÊdz£ÓõĻù±¾ÔËË㣬ÊÇËã·¨µÄÖØÒª×é³É²¿·Ö¡£ÏÂÃæÀ´¿´Ëã·¨ÖеÄ˳Ðò²éÕÒ¡¢¶þ·Ö²éÕÒ¡¢²åÖµ²éÕҺͷֿé²éÕÒ£¬½éÉÜËûÃǵÄʵÏÖ·½·¨¡£
˳Ðò²éÕÒ(Ò²±»³ÆÎªÏßÐÔ²éÕÒ)ÊÇ×î¼òµ¥¡¢×îÖ±½ÓµÄ²éÕÒËã·¨¡£¹ËÃû˼Ò壬˳Ðò²éÕÒ¾ÍÊǽ«ÊýÁдÓÍ·µ½Î²°´ÕÕ˳Ðò²éÕÒÒ»±é£¬ÊÇ×îÈÝÒ×Àí½âµÄËã·¨¡£
¾ÙÀý£ºÎÒÃÇÒª´ÓÏÂÃæÊýÁÐÖÐÕÒµ½“1”Õâ¸öÔªËØ¡£

ÎÒÃÇÒª´ÓÏÂÃæÊýÁÐÖÐÕÒµ½“1”Õâ¸öÔªËØ£¬´ÓµÚÒ»¸öÔªËØ¿ªÊ¼±éÀú£¬ÖðÒ»±È½Ï¡£

ÎÒÃÇÒª´ÓÏÂÃæÊýÁÐÖÐÕÒµ½“1”Õâ¸öÔªËØ£¬´ÓµÚÒ»¸öÔªËØ¿ªÊ¼±éÀú£¬ÖðÒ»±È½Ï£¬Ö±µ½ÕÒµ½(»ò±éÀúÍê³É)Ϊֹ¡£

def sequentialSearch(ilist, key):
iLen = len(iList)
for i in range(iLen):
if ilist[i] == key:
return i
return -1
˳²éÕÒµÄʱ¼ä¸´ÔÓ¶ÈO(n)£¬¿Õ¼ä¸´ÔÓ¶È0(1)¡£
(Binary Search)ÊÇÓ¦ÓÃÔÚÓÐÐòÊý¾ÝÖеģ¬Ê®·Ö¸ßЧµÄ²éÕÒËã·¨¡£Èç¹ûÊý¾ÝÊÇÎÞÐòµÄ£¬ÎÒÃÇÏÈÒª½«Êý¾Ý´ÓСµ½´óÅÅÐò¡£ÆäÔÀíÊDZȽϴý²éÊý¾ÝÓëÊý×éÖÐÖµµÄÊý¾ÝµÄ´óС£¬Èç¹ûµÈÓÚÖмäÖµÔòÖ±½Ó·µ»Ø£¬Èç¹û´óÓÚÖмäÖµ£¬¾ÍÖ»ÔÚºó°ë²¿·Ö²éÕÒ£¬Èç¹ûСÓÚÖмäÖµ£¬¾ÍÔÚǰ°ë²¿·Ö²éÕÒ£¬Èç´ËÍù¸´£¬Ö±µ½ÕÒµ½Êý¾Ý£¬»òÊ£ÏÂÒ»¸öÔªËØ¡£
¶þ·Ö²éÕÒ´úÂëʵÏÖ
def binary_search(iList, key):
iLen = len(iList)
left = 0
right = iLen -1
while right - left > 1:
mid = (left + right) // 2
if key < ilist[mid]:
right = mid
elif key > ilist[mid]:
left = mid
else:
return mid
if key == iList[left]:
return left
elif key == ilist[right]:
return right
else:
return -1
¶þ·Ö²éÕÒµÄʱ¼ä¸´ÔÓ¶ÈÊÇo(logn)
¢ÙÔÚn¸öÔªËØÖÐѰÕÒ→¢ÚÔÚn/2¸öÔªËØÖÐѰÕÒ→¢ÛÔÚn/4¸öÔªËØÖÐѰÕÒ….ÔÚ1¸öÔªËØÖÐѰÕÒ
n¾¹ý¼¸´Î“2”=1→log2n=0(logn)
ËÑË÷¹ý³Ì´ÓÊý×éµÄÖмäÔªËØ¿ªÊ¼£¬Èç¹ûÖмäÔªËØÕýºÃÊÇÒª²éÕÒµÄÔªËØ£¬ÔòËÑË÷¹ý³Ì½áÊø¡£Èç¹ûÄ³Ò»ÌØ¶¨ÔªËØ´óÓÚ»òÕßСÓÚÖмäÔªËØ£¬ÔòÔÚÊý×é´óÓÚ»òСÓÚÖмäÔªËØµÄÄÇÒ»°ëÖвéÕÒ£¬¶øÇÒ¸ú¿ªÊ¼Ò»Ñù´ÓÖмäÔªËØ¿ªÊ¼±È½Ï¡£
Èç¹ûÔÚijһ²½ÖèÊý×éΪ¿Õ£¬Ôò´ú±íÕÒ²»µ½¡£ÕâÖÖËÑË÷Ë㷨ÿһ´Î±È½Ï¶¼Ê¹ËÑË÷·¶Î§ËõСһ°ë¡£
¶þ·Ö²éÕÒµÄʱ¼ä¸´ÔÓ¶È£º0(logn)
²åÖµ²éÕÒ(lnterpolation Search)ÊǶÔʵÀýµÄ¶þ·Ö²éÕҵĸĽø£¬ÆäÓ¦Óó¡¾°ÊÇÅÅÐòÊý×éÖеÄÖµÊǾùÔÈ·Ö²¼µÄ¡£¶þ·Ö²éÕÒ×ÜÊǵ½ÖмäÔªËØ×ö×óÓÒ»®·Ö£¬¶ø²åÖµËÑË÷»á¸ù¾ÝÕýÔÚËÑË÷µÄKeyµÄ´óСÀ´È·¶¨»®·ÖµÄλÖÃÀýÈ磬Èç¹ûKey¸ü½Ó½ü×îºóÒ»¸öÔªËØ£¬Ôò²åÖµËÑË÷»á´Óºó°ë²¿·Ö¿ªÊ¼½øÐÐÊý¾Ý»®·Ö¡£
Mid =L + (R-L) x (target–data[L]) / data[R]-data[L]
²åÖµ²éÕÒ¾ÙÀý£º

Mid = L +(R-L)(target- data[L]) / data[R]-data[L]= 0+(7-0) ×(11-1)÷(14-1) =7× 10÷13 = 5.38

²åÖµ²éÕÒ´úÂë
def interpolation_search(ilist, key):
iLen = len(iList)
left = 0
right = iLen - 1
while right - left > 1:
mid = left + (key -iList[left]) * (right - left) // (iList[right] - iList[left])
if mid == left:
mid +=1 # µ±ilist[right]ºÍilist[left]Ïà²îÌ«´ó,ÓпÉÄܵ¼ÖÂmidÒ»Ö±µÈÓÚleftÏÝÈëËÀÑ»·
if key < iList[mid]:
right = mid
elif key > ilist[mid]:
left = mid
else:
return mid
if key == ilist[left]:
return left
elif key == iList[right]:
return right
else:
return -1
¶þ·Ö²éÕҵĸĽø£¬ÊʺϾùÔÈ·Ö²¼µÄÓÐÐòÊý×é²åÖµ²éÕÒËã·¨µÄ¸´ÔÓ¶ÈÊÇ0(loglogn)¡£
·Ö¿é²éÕÒºÍÒÔÉϼ¸ÖÖ²éÕÒ·½Ê½ÓÐËù²»Í¬£ºË³Ðò²éÕÒµÄÊýÁÐÊÇ¿ÉÒÔÎÞÐòµÄ;¶þ·Ö·¨²éÕҺͲåÈë²éÕÒµÄÊýÁбØÐëÊÇÓÐÐòµÄ;·Ö¿é²éÕÒ½éÓÚÁ½ÕßÖ®¼ä£¬ÐèÒª¿éÓÐÐò£¬ÔªËØ¿ÉÒÔÎÞÐò¡£
·Ö¿é²éÕÒ£¬ÏȰ´ÕÕÒ»¶¨µÄȡֵ·¶Î§½«ÊýÁзֳÉÊý¿é¡£¿éÄÚµÄÔªËØÊÇ¿ÉÒÔÎÞÐòµÄ£¬µ«¿é±ØÐëÊÇÓÐÐòµÄ¡£Ëùν¿éÓÐÐò£¬¾ÍÊÇ´¦ÓÚºóÃæÎ»ÖõĿéÖеÄ×îÐ¡ÔªËØ¶¼Òª±ÈÇ°ÃæÎ»ÖÿéÖеÄ×î´óÔªËØ´ó¡£

·Ö¿é²éÕÒ²éÕÒ¹ý³Ì£º
¢ÙÈ·¶¨´ý²é¼Ç¼ËùÔÚ¿é(˳Ðò»òÕÛ°ë²éÕÒ)
¢ÚÔÚ¿éÄÚ²éÕÒ(˳Ðò²éÕÒ)
iList = randomList(20)
indexList = [[250, 0], [500, 0], [750, 0], [1000, 0]]
def divideBlock():
global ilist, indexlist
sortList = []
for key in indexList:
subList = [i for iin iList if i<key[e]]#ÁбíÍÆµ¼£¬Ð¡ÓÚkey[e]µÄµ¥¶À·Ö¿é
key[1] = len(subList)
sortList += subList
iList=list£¨set£¨iList£©- set£¨subList£©£©#¹ýÂ˵ôÒѾ¼ÓÈëµ½subListÖеÄÔªËØ
ilist = sortlist
return indexList
def blockSearch(iList, key, indexList):
left = 0 #ËÑË÷ÊýÁÐµÄÆðʼµãË÷Òý
right=e#ËÑË÷ÊýÁеÄÖÕµãË÷Òý
for indexInfo in indexList:
if(left+right)<len(iList):
left += right
right += indexInfo[1]
if key < indexInfo[0]:
break
for i in range(left, right):
if key == ilist[i]:
return i
return -1
ChatGPTÁÄÌì»úÆ÷ÈË£¬´Ó×¢²áµ½ÊµÕ½£¬ChatGPTÒ»Ì×ͨ¹Ø½Ì³Ì
2023-03-07SSDµÄ¶à³ß¶ÈÌØÕ÷ͼµÄÍøÂç½á¹¹ÓÐÄÄЩ£¿
2023-03-06yoloËã·¨£º¹¹ÔìѵÁ·Ñù±¾ºÍÉè¼ÆËðʧº¯Êý
2022-12-08ͼÏñ·ÖÀàÊÇʲô£¿AlexNetÊÖдÊý×ÖͼÏñʶ±ð
2022-12-07yoloËã·¨£º»ù´¡¸ÅÄîºÍYoloÍøÂç½á¹¹
2022-12-07ʲôÊÇðÅÝÅÅÐò£¿Ã°ÅÝÅÅÐòËã·¨µÄʵÏÖ¹ý³Ì
2022-11-16
±±¾©Ð£Çø