【常见算法分类】

张开发
2026/4/20 1:45:44 15 分钟阅读

分享文章

【常见算法分类】
常见算法分类与应用案例排序算法快速排序快速排序通过分治策略实现高效排序平均时间复杂度为O(n log n)。Python实现defquick_sort(arr):iflen(arr)1:returnarr pivotarr[len(arr)//2]left[xforxinarrifxpivot]middle[xforxinarrifxpivot]right[xforxinarrifxpivot]returnquick_sort(left)middlequick_sort(right)print(quick_sort([3,6,8,10,1,2,1]))搜索算法二分查找适用于已排序数组时间复杂度O(log n)。Python实现defbinary_search(arr,target):low,high0,len(arr)-1whilelowhigh:mid(lowhigh)//2ifarr[mid]target:lowmid1elifarr[mid]target:highmid-1else:returnmidreturn-1print(binary_search([1,3,5,7,9],5))图算法Dijkstra最短路径解决带权图的单源最短路径问题使用优先队列优化后时间复杂度O(E V log V)。Python实现importheapqdefdijkstra(graph,start):distances{node:float(inf)fornodeingraph}distances[start]0heap[(0,start)]whileheap:current_dist,current_nodeheapq.heappop(heap)ifcurrent_distdistances[current_node]:continueforneighbor,weightingraph[current_node].items():distancecurrent_distweightifdistancedistances[neighbor]:distances[neighbor]distance heapq.heappush(heap,(distance,neighbor))returndistances graph{A:{B:1,C:4},B:{A:1,C:2,D:5},C:{A:4,B:2,D:1},D:{B:5,C:1}}print(dijkstra(graph,A))动态规划斐波那契数列通过记忆化存储避免重复计算时间复杂度从O(2^n)优化到O(n)。Python实现deffibonacci(n,memo{}):ifninmemo:returnmemo[n]ifn2:return1memo[n]fibonacci(n-1,memo)fibonacci(n-2,memo)returnmemo[n]print(fibonacci(10))机器学习算法线性回归用于连续值预测通过最小化均方误差求解参数。Python实现importnumpyasnpclassLinearRegression:def__init__(self,lr0.01,n_iters1000):self.lrlr self.n_itersn_iters self.weightsNoneself.biasNonedeffit(self,X,y):n_samples,n_featuresX.shape self.weightsnp.zeros(n_features)self.bias0for_inrange(self.n_iters):y_prednp.dot(X,self.weights)self.bias dw(1/n_samples)*np.dot(X.T,(y_pred-y))db(1/n_samples)*np.sum(y_pred-y)self.weights-self.lr*dw self.bias-self.lr*dbdefpredict(self,X):returnnp.dot(X,self.weights)self.bias Xnp.array([[1,1],[1,2],[2,2],[2,3]])ynp.dot(X,np.array([1,2]))3modelLinearRegression()model.fit(X,y)print(model.predict(np.array([[3,5]])))

更多文章