Python面試必須會的常用查詢和排序演算法

2021-10-06 09:36:21 字數 2793 閱讀 4242

查詢演算法

二分查詢原理:把目標數和序列中間的數進行比較,如果相等就結束,如果小,就在中間數左邊的子串行中查詢,如果大就在中間數右邊子串行中查詢,如果某乙個步驟陣列為空就是不存在,遞迴的去查詢。

def

binarysearch

(arr,l,r,x)

:if r>=l:

mid =

int(l +

(r-l)/2

)if arr[mid]

> x:

return binarysearch(arr,l,mid-

1,x)

elif arr[mid]

== x:

return mid

else

:return binarysearch(arr,mid+

1,r,x)

else

:return

'此數不存在'

if __name__ ==

'__main__'

: arr =[1

,4,5

,7,9

,10] x =

6 result = binarysearch(arr,0,

len(arr)-1

,x)print

(f'查詢結果為'

)

- 線性查詢原理:遍歷序列中所有元素,一一比較,直到找到或遍歷完所有元素為止,針對於所有無序或有序序列。
def

xianxingsearch

(arr,n,x)

:for i in

range

(n):

if arr[i]

== x:

return i

return-1

arr =[1

,4,3

,6,7

,56,12

,45]x =

56result = xianxingsearch(arr,

len(arr)

,x)if result !=-1

:print

('目標值的索引為%s'

%result)

else

:print

('陣列中不存在目標值'

)

排序演算法

def

query

(arr):if

len(arr)

<2:

return arr

# step1:選取基準值

base_value = arr[

len(arr)//2

]# step2:把陣列中的每個元素對其比較

left_arr =

right_arr =

arr.remove(base_value)

for i in

range

(len

(arr)):

if arr[i]

>=base_value:

)else:)

return query(left_arr)

+[base_value]

+ query(right_arr)

arr =[1

,2,23

,4,6

,7]print

(query(arr)

)

def

maopaosort

(arr)

:for i in

range

(len

(arr)):

for j in

range(0

,len

(arr)

-i-1):

if arr[j]

>=arr[j+1]

: arr[j]

,arr[j+1]

= arr[j+1]

,arr[j]

return arr

arr =[5

,4,3

,34,6

,7]new = maopaosort(arr)

print

(new)

def

charu

(arr)

:for i in

range(1

,len

(arr)):

key = arr[i]

j = i -

1while j>=

0and key: arr[j+1]

= arr[j]

j -=

1 arr[j+1]

= key

arr =[3

,5,4

,2]charu(arr)

print

(arr)

def

choicesort

(arr,new=

):min_value =

min(arr)

arr.remove(min_value)

iflen

(arr)!=0

: choicesort(arr)

return new

arr =[3

,5,23

,6,8

]res = choicesort(arr)

print

(res)

Vim的必須會的技巧

高效率移動 1 在插入模式之外 基本上來說,你應該盡可能少的呆在插入模式裡面,因為在插入模式裡面 vim 就像乙個 啞巴 編輯器一樣。很多新手都會一直呆在插入模式裡面,因為這樣易於使用。但 vim 的強大之處在於他的命令列模式!你會發現,在你越來越了解 vim 之後,你就會花越來越少的時間使用插入模...

Linux系列課程 02 必須會的常用操作命令 1

常用命令 ls 顯示當前目錄的內容 ls 2 顯示2結尾的檔案 匹配所有的 ls 2?顯示兩位 2開頭的 檔案 必須有一位,只能匹配一位 ls 124 w 匹配1,2,4 開頭的檔案 touch text.text 建立檔案 clear 清屏 cat text.text 檢視檔案內容,不管有多大,都...

前端人員必須會的jsonp

同源策略 same origin policy 瀏覽器出於安全方面的考慮,只允許與同域下的接 互。同域指的是?同協議 如都是http或者https 同網域名稱 如都是 和 同埠 如都是80埠 比如 使用者開啟了 頁面 log,當前頁面下的 js 向 的介面發 ajax 請求,瀏覽器是允許的。但假如向...