查詢演算法
二分查詢原理:把目標數和序列中間的數進行比較,如果相等就結束,如果小,就在中間數左邊的子串行中查詢,如果大就在中間數右邊子串行中查詢,如果某乙個步驟陣列為空就是不存在,遞迴的去查詢。
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 請求,瀏覽器是允許的。但假如向...