python基礎教學day18 查詢 貪心演算法

2021-09-25 11:20:14 字數 3032 閱讀 2538

1、查詢表是由同一系型別的資料元素構成的集合。

一般對於查詢表有一下幾種操作:

2、在查詢表中只做查詢操作,而不改動表中的資料元素,稱此類查詢表為靜態查詢表;

在查詢表中做查詢操作的同時進行插入資料或者刪除資料的操作,稱此類為動態查詢表。

3、關鍵字又細分為關鍵字和次關鍵字。

1、從表中的最後乙個資料元素開始,逐個同記錄的關鍵字比較。

**實現如下

def sequence_search

(array, key)

:"""

順序查詢演算法

"""for i in range

(len

(array)):

if array[i]

== key:

return i

return false

array_0 =[23

,43,12

,54,65

,48]print

(sequence_search

(array_0,12)

)

1、二分法查詢

優點:

缺點:

實用場景:

**實現如下

def halffind

(nums,key,low,high)

:"""

二分查詢

:param nums:查詢

:param key: 關鍵字

:param low: 索引值,一般為0

:param high: 最後索引值

:return

:"""

mid =

(low + high)

// 2

if key == nums[mid]

:return mid

if low > high:

return false

if key > nums[mid]

:return

halffind

(nums,key,mid+

1,high)

else

:return

halffind

(nums,key,low,mid-1)

if __name__ ==

'__main__'

: nums =[23

,34,2

,5,81

,99] key =

int(

input

('請輸入要查詢的關鍵字:'))

h =halffind

(nums,key,0,

len(nums)-1

)print

(h)

1、在對問題求解時,總是作出在當前看來是最好的選擇。也就是說,不從整體上加以考慮,

它所作出的僅僅是在某種意義上的區域性最優解(是否是全域性最優,需要證明)。

2、最優裝載問題:

有一天海盜們截獲了一艘裝滿各種各樣古董的貨船,每一件都價值連城,一旦打碎就是去了價值,

海盜船載重量為c,每件固定的重量為wi,海盜們該如何盡可能裝載最多數量的古董呢?

**實現如下:

antique =[4

,10,7

,11,3

,5,14

,2]def max_ans

(antique)

: antique_sort =

sorted

(antique)

ans,tmp =0,

0 #ans為古董的數量,tmp為古董的重量

ship =

#存放古董重量

for i in antique_sort:

tmp +

= i if tmp <=30:

ans +=1

ship.

(tmp)

print

('古董數量:'

,ans)

print

('古董的重量:'

,tmp)

print

('裝載的古董'

,ship)

max_ans

(antique)

3、揹包問題

假設山洞中有n種寶物,每種寶物有一定重量w和相應的價值v,毛驢運載能力

一種寶物只能拿一樣,寶物可分割。怎樣才能使毛驢運走寶物的價值最大呢?

**實現如下:

#datas中每乙個元素代表乙個古董,每乙個列表第乙個元素代表古董重量

#第二個元素代表古董價值

datas =[[

4,3]

,[2,

8],[

9,18]

,[5,

6],[

5,8]

,[8,

20]]#,[5,

5],[

4,6]

,[5,

7],[

5,15]

]m =

30 #毛驢的運載能力

w =0 #獲取的總價值

#計算出每件寶物的價效比,按照從高到底排序

for i in range

(len

(datas)):

price = datas[i][1

]/ datas[i][0

] datas[i]

.(price) #增加價效比

print

(datas)

datas.

sort

(key=lambda data:data[2]

,reverse=true)

for data in datas:

if data[0]

<= m:

w += data[1]

m -= data[0]

else

: w +

= data[2]

* mprint

('總價值:'

,w)

C 基礎程式設計DAY18

寫一函式,在一陣列裡查詢某個值 include include using namespace std intsearch int a,int n,int key else return 1 return 1 key不在a中,返回 1,表示該函式失敗 int main int key cin key...

python學習 Day18 異常

異常即是乙個事件,該事件會在程式執行過程中發生,影響了程式的正常執行。一般情況下,在python無法正常處理程式時就是發生乙個異常,異常是python物件,表示乙個錯誤,當python指令碼發生異常時我們需要捕獲處理它,否則程式會終止執行。異常處理常用形式 try 正常操作 except 發生異常,...

閉關日記 Day18

陰。好幾天沒更新日記了,說一下這幾天完成的事和正在做的事。專案f基本完結,專案b在除錯相容 360瀏覽器缺省會進入相容模式來渲染 練車 1號考科三 翻譯 uwp設計指南 當前進度1 時間碎片管理的uwp著手開發 專案t 另外,乙個學長想讓我幫忙做乙個h5小遊戲,在溝通中。target 003 時長 ...