日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務,提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

今天,我們來看看直觀地看看我自創(chuàng)算法VS二分查找 的時間、計算量大比拼吧!

二分查找,時間復雜度為O(log2 n)

我的算法,時間復雜度可能為O(logk n)

大家應該知道時間復雜度的效率吧?(不知道?學一學:算法的時間復雜度)

log是對數(shù),logk n的得數(shù)r滿足k^r=n

所以,log中k越大,得數(shù)越小

這么說,k如果大于2,那我的算法效率應該比二分查找高吧(我的算法默認k=3)

除了數(shù)學計算,我們用@cal_time的方法計算時間

(不知道?看看:時間計算器)

代碼:

from cal_time import *
import time

@cal_time
def twomidsearch(lst,val):
	left=0
	right=len(lst)-1
	count=0
	while left<=right:
		mid=(left+right)//2
		mid1=(left+mid)//2
		mid2=(right+mid)//2
		if lst[mid1]==val:
			return [mid1,count]

		if lst[mid2]==val:
			return [mid2,count]
		if lst[mid1]>val:
			right=mid1-1
			
			
		if lst[mid2]>val:
			right=mid2-1
			
		if lst[mid1]<val:
			left=mid1+1
			
		if lst[mid2]<val:
			left=mid2+1
			
		count+=1
		

	else:
		return False		

@cal_time
def binary_search(lst,val):

    left=0
    right=len(lst)-1
    count=0
    while left<=right:      #候選區(qū)有值
        mid=(left+right)//2
        if lst[mid]==val:
            
            return [mid,count]

        elif lst[mid]>val:
            right=mid-1
            
        else:
            left=mid+1
        count+=1 
        
            
    else:
        return None	
        						
@cal_time 
def all_test(max_n):
	lst=list(range(1,max_n+1))
	
	for i in range(25):
		t=twomidsearch(lst,max_n)
		b=binary_search(lst,max_n)
		print(t[1])
		print(b[1])
	
max_n=550000000
all_test(max_n)	

(電腦性能低的將max_n調(diào)小!目前5.5億,有可能死機!)

運行結(jié)果令我大吃一驚:

twomidsearch run time:0.0012992382049560546875 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0.0099947452545166015625 seconds
15
29
twomidsearch run time:0.0009992122650146484375 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0.003997802734375 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0.0019989013671875 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
twomidsearch run time:0.0009992122650146484375 seconds
binary_search run time:0.0059967041015625 seconds
15
29
twomidsearch run time:0 seconds
binary_search run time:0 seconds
15
29
all_test run time:22.956223964691162109375 seconds

注意第93、94行!

 

這差距!……厲害厲害

5.5億在計算量最大時,我的算法最少只用了0.0009992122650146484375秒!

所以,下一次在使用有序列表查找時,我覺得我的算法才厲害

今天就給大家講到這里

大家覺得我的算法實用嗎?歡迎評論!

分享到:
標簽:算法 查找 Python
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定