關於演算法的兩個例子

2022-05-26 13:12:11 字數 1593 閱讀 9666

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 - 1

else:

low = mid + 1

return none

def search_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 += 1

elif li[i] + li[j] > target:

j -=1

else:

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 -1

else:

low=mid + 1

return none

def search_index(li,val):

i=0j=0

mid=bin_search(li,val)

i=mid-1

j=mid + 1

while li[i] ==val:

i -= 1

while li[j] == val:

j += 1

return (i+1,j-1)

Python 關於演算法的兩個例子

演算法例子一 給定乙個列表和乙個整數,找到兩個數的下標,使得這兩個數的各為給定的整數,保證肯定僅有乙個結果 窮舉法 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 targ...

學習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...

C 中Override的兩個例子

main.cc created on 2008 8 5 author administrator includeclass base class derived public base int main int arg,char args 結果 derived clone derived clone...