p ython二分查找算法
时间: 2023-07-10 20:12:41 浏览: 76
二分查找算法也称为折半查找算法,是一种高效的查找算法。它的基本思想是将有序的数组分成两部分,通过与中间元素的比较,确定待查找元素在哪一部分中,然后再在该部分中继续执行相同的操作,直到找到待查找元素。
下面是一个用 Python 实现的二分查找算法示例:
```python
def binary_search(arr, target):
"""
在有序数组 arr 中查找 target 元素,返回其下标,若不存在则返回 -1
"""
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] > target:
right = mid - 1
else:
left = mid + 1
return -1
```
其中,arr 表示有序数组,target 表示待查找元素。该算法使用两个指针 left 和 right 分别指向数组的左右两端,不断将数组分成两部分,直到找到 target 元素或者确定 target 元素不存在。时间复杂度为 O(log n),其中 n 表示数组的长度。
相关问题
p ython实现斐波那契数列算法
斐波那契数列是一种经典的数列,定义如下:
F(0)=0,F(1)=1
F(n)=F(n-1)+F(n-2)(n>=2)
下面是Python实现斐波那契数列算法的示例代码:
```python
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
```
其中,使用递归实现斐波那契数列算法。在函数中,先判断n是否为0或1,如果是,则直接返回0或1;否则,递归调用函数计算F(n-1)和F(n-2),最后返回它们的和即可。
p ython 加密算法
以下是Python中常用的加密算法:
1. MD5加密算法
MD5是一种常用的哈希加密算法,可以将任意长度的数据加密成固定长度的数据。在Python中,可以使用hashlib库来实现MD5加密算法。
```python
import hashlib
str = 'Hello World!'
hash = hashlib.md5(str.encode())
print("MD5加密结果为:", hash.hexdigest())
```
2. SHA1加密算法
SHA1也是一种常用的哈希加密算法,可以将任意长度的数据加密成固定长度的数据。在Python中,可以使用hashlib库来实现SHA1加密算法。
```python
import hashlib
str = 'Hello World!'
hash = hashlib.sha1(str.encode())
print("SHA1加密结果为:", hash.hexdigest())
```
3. AES加密算法
AES是一种常用的对称加密算法,可以加密和解密数据。在Python中,可以使用pycryptodome库来实现AES加密算法。
```python
from Crypto.Cipher import AES
import base64
str = 'Hello World!'
key = '1234567890123456' # 密钥必须是16、24或32位长度
iv = '1234567890123456' # 向量必须是16位长度
cipher = AES.new(key.encode(), AES.MODE_CBC, iv.encode())
msg = cipher.encrypt(str.encode())
print("AES加密结果为:", base64.b64encode(msg).decode())
```