算法笔记(一):插入排序和线性查找

之前的版本感觉有点难以理解,重新修改下。

(一)插入排序

假如我们打牌时候,将手中的牌从左到右按顺序排列(例如: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))
posted @ 2018-05-22 18:39  free赖权华  阅读(436)  评论(0编辑  收藏  举报