算法
Algorithm
GinGinXia
学习的有效方式是输出。
展开
-
归并排序 图解+python实现
图解算法:Python实现:原创 2020-07-04 09:52:48 · 197 阅读 · 0 评论 -
插入排序 图解+python实现
插入排序的思路是从右侧的未排序区域内取出一个数据,然后将它插入到已排序区域内合适的位置上。算法图解:代码实现:import numpy as npdef InsertSort(arr): for i in range(len(arr)-1): j=i+1 while(j>=1): if arr[j]<arr[j-1]: temp=arr[j-1] .原创 2020-06-26 10:59:09 · 212 阅读 · 0 评论 -
冒泡排序 图解+python实现
冒泡排序就是重复’从序列右边(或左边)比较两个数字的大小,再根据结果交换两个数字的位置‘这一操作的算法。在这个过程中,数字会像泡泡一样,慢慢从右往左(从左到右)浮到序列的顶端,所以这个算法被称为冒泡排序。时间复杂度为。图解算法,以从右边开始比较为例。代码实现:import numpy as np#从左边开始比较def leftBubbleSort(arr): for i in range(len(arr)-1): for j in range(le..原创 2020-06-26 09:47:14 · 493 阅读 · 0 评论 -
动态规划(1)-背包问题 python实现
动态规划将问题分成小问题,并先着手解决这些小问题。《算法图解》中的一个例子:假设你是个小偷,背着一个可装4磅东西的背包。你可偷窃的商品有如下3件。音响 笔记本电脑 吉他 3000美元 2000美元 1500美元 4磅 3磅 1磅 为了让盗窃的商品价值最高,你该选择哪些商品?代码实现:import numpy as npdef bag(value,weight,capacity,n): calculateTable=np.zer原创 2020-06-26 09:26:57 · 425 阅读 · 0 评论 -
快速排序(Quick sort)Python实现
快速排序用到了分而治之(Divide andConquer, D&C)的思想,简单地说就是把复杂的问题分解成相同或相似的可直接求解的简单问题。快速排序的速度比选择要快,平均运行时间为。步骤如下:1. 选择基准值。 2. 将数组分成两个子数组,小于基准值的元素组成的子数组和大于基准值的元素组成的子数组。 3. 对这两个子数组进行快速排序。Python代码如下:def quickSort(array): if len(array)<2: return .原创 2020-06-21 08:39:35 · 416 阅读 · 0 评论 -
递归算法(Python实现)
递归指的是调用自己的函数。 每个递归函数都有两个条件:基线条件(base case)和递归条件(recursive case)。递归条件是函数调用自己,基线条件是函数不再调用自己,从而避免形成无限循环。下面是一些例子:#阶乘def fact(x): if x==1: #base case return 1 else: return x*fact(x-1) #recursive case#斐波那契数列def原创 2020-06-21 00:39:04 · 1219 阅读 · 0 评论 -
选择排序(Selection sort)Python实现
选择排序是一种很简单和直观的排序算法(不过时间复杂度较高,)。基本思想如图示,Python 实现方式一:def selectionSort(arr): for i in range(len(arr)-1): min_index=i for j in range(i+1,len(arr)): if(arr[min_index]>arr[j]): min_index=j #找到最小原创 2020-06-19 10:41:33 · 848 阅读 · 0 评论 -
二分查找(Binary search)Python实现
二分查找是一种算法,其输入是一个有序的元素列表,如果要查找的元素包含在列表中,二分查找返回去位置,否则返回Null。二分查找的时间复杂度为。如果列表包含1024个元素,最多需要见擦汗10个元素。(因为)。Python实现:def binary_search(list, item): #有序数组 low=0 high=len(list)-1 while low<=high: mid=(low+high)//2 #如果(low+high)不是偶数,自动将原创 2020-06-18 21:30:01 · 1586 阅读 · 0 评论