兩種方法實現Python二分查詢演算法 兩種方法實現Python二分查詢演算法
阿新 • • 發佈:2018-11-29
兩種方法實現Python二分查詢演算法
一.
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
arr
=
[
1
,
3
,
6
,
9
,
10
,
20
,
30
]
def
findnumber(l,h,number):
mid
=
(l
+
h)
/
/
2
if
arr[mid]
=
=
number:
print
(
"找到了"
+
str
(mid))
elif
arr[mid]<number:
l
=
mid
return
findnumber(mid
+
1
,h,number)
elif
arr[mid]>number:
h
=
mid
return
findnumber(
0
,mid
-
1
,number)
else
:
print
(
"沒有找到"
)
findnumber(
0
,
len
(arr)
-
1
,
10
)
|
二.
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def
binary_search(data_source,find_n):
#取中位數
mid
=
int
(
len
(data_source)
/
2
)
if
len
(data_source)>
=
1
:
if
data_source[mid]>find_n:
#中位數大於要查詢的數,則要查詢的數在左半部分,繼續呼叫二分演算法進行查詢
binary_search(data_source[:mid],find_n)
elif
data_source[mid]<find_n:
#中位數小於要查詢的數,則要查詢的數在右半部分
binary_search(data_source[mid:],find_n)
else
:
#中位數等於要查詢的數
print
(
"找到了:"
,data_source[mid])
else
:
print
(
"沒有找到"
)
data
=
list
(
range
(
1
,
100000
))
binary_search(data,
88888
)
|
一.
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
arr
=
[
1
,
3
,
6
,
9
,
10
,
20
,
30
]
def
findnumber(l,h,number):
mid
=
(l
+
h)
/
/
2
if
arr[mid]
=
=
number:
print
(
"找到了"
+
str
(mid))
elif
arr[mid]<number:
l
=
mid
return
findnumber(mid
+
1
,h,number)
elif
arr[mid]>number:
h
=
mid
return
findnumber(
0
,mid
-
1
,number)
else
:
print
(
"沒有找到"
)
findnumber(
0
,
len
(arr)
-
1
,
10
)
|
二.
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
def
binary_search(data_source,find_n):
#取中位數
mid
=
int
(
len
(data_source)
/
2
)
if
len
(data_source)>
=
1
:
if
data_source[mid]>find_n:
#中位數大於要查詢的數,則要查詢的數在左半部分,繼續呼叫二分演算法進行查詢
binary_search(data_source[:mid],find_n)
elif
data_source[mid]<find_n:
#中位數小於要查詢的數,則要查詢的數在右半部分
binary_search(data_source[mid:],find_n)
else
:
#中位數等於要查詢的數
print
(
"找到了:"
,data_source[mid])
else
:
print
(
"沒有找到"
)
data
=
list
(
range
(
1
,
100000
))
binary_search(data,
88888
)
|