Python 關於演算法的兩個例子

2021-10-01 19:46:20 字數 2285 閱讀 2805

演算法例子一:

給定乙個列表和乙個整數,找到兩個數的下標,使得這兩個數的各為給定的整數,保證肯定僅有乙個結果

窮舉法:

def

brute_force

(li,target)

: n=

len(li)

for i in

range(0

,n):

for j in

range

(i+1

,n):

if li[i]

+li[j]

==target:

return i,j

二分查詢法:

'''

'''def

bin_search

(li, val)

: low =

0 high =

len(li)-1

while low <= high:

mid =

(low + high)//2

if li[mid]

== val:

return mid

elif li[mid]

> val:

high = mid -

1else

: low = mid +

1return

none

defsearch_index

(li, target)

: li.sort(

)for i in

range(0

,len

(i))

: j=bin_search(li[i +1:

], target - li[i]

)if j:

return i,j

方法三

先給列表排序,然後迴圈遍歷列表,如果列表第乙個數與列表最後乙個數相加的和大於target,把被加數向左偏移一位,

如果列表第乙個數與列表最後乙個數相加的和小於target,把加數向右偏移一位

如果列表中兩個數相加等於target,則返回列表中的兩個數的下標

def

search_index

(li,target)

: li.sort(

) j=

len(li)-1

for i in

range

(j):

if li[i]

+ li[j]

< target:

i +=

1elif li[i]

+ li[j]

> target:

j -=

1else

:return i,j

演算法例子二:

給定乙個公升序列表和乙個整數,返回該整數在列表中的下標範圍

思路:

先使用二分法找到val在列表中的下標,然後把下標分別向左和向中移動,直到下標的值不等於目標整數時返回下標的元組

'''

'''def

bin_search

(li,val)

: low=

0 high=

len(li)-1

while low <= high:

mid=

(low + high)//2

if li[mid]

== val:

return mid

elif li[mid]

> val:

high = mid -

1else

: low=mid +

1return

none

defsearch_index

(li,val)

: i=

0 j=

0 mid=bin_search(li,val)

i=mid-

1 j=mid +

1while li[i]

==val:

i -=

1while li[j]

== val:

j +=

1return

(i+1

,j-1

)

關於演算法的兩個例子

def brute force li,target n len li for i in range 0,n for j in range i 1,n if li i li j target return i,jdef bin search li,val low 0 high len li 1 whi...

python中ADF檢驗的兩個例子

eg1 x np.arange 10 result sts.adfuller x,1 result 0.9921567416492214,0.9941824998493046,1,8,555.5406151390793 統計檢驗值 0.9921567416492214 p value 0.99418...

學習shell程式設計的兩個例子

例子一 繪製特殊圖形 如下 bin bash max no 0 echo n enter number between 5 to 9 read max no if max no ge 5 a max no le 9 then echo wtf.i ask to enter number betwee...