算法笔记(一):插入排序和线性查找
之前的版本感觉有点难以理解,重新修改下。
(一)插入排序
假如我们打牌时候,将手中的牌从左到右按顺序排列(例如:1、2、5、7、8)
这时抽到一张新牌3,从右到左和手上的牌进行比较,然后插入到2的后面(1、2、3、5、7、8),3后面的牌的索引全部+1.
实现代码:
1 import numpy as np 2 3 #创建一个ndarray对象 4 A = np.array([5,2,4,7,6,10,1,3,9]) 5 6 #升序排序版本 7 for j in range(len(A)): 8 key = A[j] 9 i = j - 1 10 while i >= 0 and key < A[i]: 11 A[i+1] = A[i] 12 i = i-1 13 A[i+1] = key 14 15 print(A) 16 #降序排序版本 17 for j in range(len(A)): 18 key = A[j] 19 i = j - 1 20 while i >= 0 and key > A[i]: 21 A[i+1] = A[i] 22 i = i -1 23 A[i+1] = key 24 25 print(A)
(二)线性查找
1 import numpy as np 2 3 #找到结果,返回索引,否则返回None 4 def search(array,key): 5 for j in range(len(array)): 6 if array[j] == key: 7 return j 8 return None 9 10 array = np.array([5,2,4,7,6,10,1,3,9]) 11 key = 10 12 13 print(search(array,key))