python的算法

简介: python的算法

Python的算法

在Python中,算法是解决问题的核心,无论是简单的数据排序还是复杂的搜索问题。以下是三种常见的算法:冒泡排序、选择排序和二分搜索,它们在Python中的实现方式和应用。

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。下面是冒泡排序在Python中的实现:

 

 

def bubble_sort(arr):

 

n = len(arr)

 

for i in range(n):

 

# 创建一个标志位,用于优化,如果在一趟遍历中没有发生交换,说明已经有序

 

swapped = False 

 

for j in range(0, n - i - 1):

 

if arr[j] > arr[j + 1]:

 

arr[j], arr[j + 1] = arr[j + 1], arr[j]

 

# 发生了交换,标志位设为True

 

swapped = True 

 

# 如果在内层循环中没有交换,说明数组已经有序,可以退出外层循环

 

if not swapped:

 

break 

 

return arr

 

 

 

# 示例

 

numbers = [64, 34, 25, 12, 22, 11, 90]

 

print(bubble_sort(numbers))

选择排序是一种简单直观的排序算法。它的工作原理是首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。以下是选择排序在Python中的实现:

 

 

def selection_sort(arr):

 

for i in range(len(arr)):

 

# 找到未排序部分的最小值的索引

 

min_idx = i

 

for j in range(i+1, len(arr)):

 

if arr[j] < arr[min_idx]:

 

min_idx = j

 

# 将找到的最小值与第i个位置的值交换

 

arr[i], arr[min_idx] = arr[min_idx], arr[i]

 

return arr

 

 

 

# 示例

 

numbers = [64, 34, 25, 12, 22, 11, 90]

 

print(selection_sort(numbers))

二分搜索,也称为折半搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。以下是二分搜索在Python中的实现:

 

 

def binary_search(arr, target):

 

low = 0 

 

high = len(arr) - 1 

 

 

 

while low <= high:

 

mid = (low + high) // 2 

 

if arr[mid] == target:

 

return mid # 元素找到,返回索引

 

elif arr[mid] < target:

 

low = mid + 1 

 

else:

 

high = mid - 1 

 

return -1 # 没有找到元素,返回-1

 

 

 

# 示例

 

sorted_array = [1, 3, 5, 7, 9]

 

target = 5 

 

result = binary_search(sorted_array, target)

 

 

 

if result != -1:

 

print(f"元素在数组中的索引为: {result}")

 

else:

 

print("元素不在数组中")

这些算法在Python中的实现相对简单明了,并且可以通过修改和优化来适应不同的应用场景。在实际应用中,根据数据的特性和需求,选择合适的算法可以大大提高程序的效率和性能。

 

相关文章
|
1月前
|
机器学习/深度学习 算法 Python
请解释Python中的随机森林算法以及如何使用Sklearn库实现它。
【2月更文挑战第28天】【2月更文挑战第101篇】请解释Python中的随机森林算法以及如何使用Sklearn库实现它。
|
25天前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
1月前
|
机器学习/深度学习 算法 数据挖掘
请解释Python中的决策树算法以及如何使用Sklearn库实现它。
决策树是监督学习算法,常用于分类和回归问题。Python的Sklearn库提供了决策树实现。以下是一步步创建决策树模型的简要步骤:导入所需库,加载数据集(如鸢尾花数据集),划分数据集为训练集和测试集,创建`DecisionTreeClassifier`,训练模型,预测测试集结果,最后通过`accuracy_score`评估模型性能。示例代码展示了这一过程。
|
1月前
|
机器学习/深度学习 算法 数据可视化
请解释Python中的K-means聚类算法以及如何使用Sklearn库实现它。
【2月更文挑战第29天】【2月更文挑战第104篇】请解释Python中的K-means聚类算法以及如何使用Sklearn库实现它。
|
4天前
|
算法 数据可视化 Python
Python用MCMC马尔科夫链蒙特卡洛、拒绝抽样和Metropolis-Hastings采样算法
Python用MCMC马尔科夫链蒙特卡洛、拒绝抽样和Metropolis-Hastings采样算法
16 6
|
5天前
|
机器学习/深度学习 算法 搜索推荐
Python用机器学习算法进行因果推断与增量、增益模型Uplift Modeling智能营销模型
Python用机器学习算法进行因果推断与增量、增益模型Uplift Modeling智能营销模型
31 12
|
10天前
|
算法 数据可视化 Python
Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现
Python贝叶斯推断Metropolis-Hastings(M-H)MCMC采样算法的实现
14 0
|
10天前
|
数据可视化 算法 数据挖掘
PYTHON实现谱聚类算法和改变聚类簇数结果可视化比较
PYTHON实现谱聚类算法和改变聚类簇数结果可视化比较
|
11天前
|
算法 数据可视化 Python
Python中LARS和Lasso回归之最小角算法Lars分析波士顿住房数据实例
Python中LARS和Lasso回归之最小角算法Lars分析波士顿住房数据实例
17 0
|
11天前
|
机器学习/深度学习 算法 Python
使用Python实现集成学习算法:Bagging与Boosting
使用Python实现集成学习算法:Bagging与Boosting
20 0