今天学了python的三种算法:线程查找、二分法查找、冒泡排序法.
一:线程查找(就是在一组数组里,依次查找想要的那个所在数组值)
例子如下:
def think(arr,n,x):
for i in range(0,n):
if (arr[i]==x):
return i
return -1
arr = [ 'A', 'B', 'C', 'D', 'E' ];
x='B';
n = len(arr);
result = think(arr,n,x);
if result!=-1:
print("字符所在的数组位置是%d" %result)
else:
print("未找到")
结果是:字符所在的数组位置是1
二:二分法查找(分搜索是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。)
例子如下:
def think(arr,l,r,x):
if r>=l:
no = int(l+(r-l)/2)
if arr[no]==x:
return no
elif arr[no]>x:
return think(arr,l,no-1,x)
else:
return think(arr,no+1,r,x)
else:
return -1
arr = [ 2, 3, 4, 10, 40 ]
x=40
result = think(arr,0,len(arr)-1,x)
if result!=-1:
print("所在的位置为%d" %result)
else:
print("数组错误")
所得结果是:所在的位置为4
三:冒泡排序法(也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。)
例子如下:
arr=[2,1,4,5,3]
def think(arr):
for i in range(len(arr)):
for j in range(0,len(arr)-i-1):
if arr[j]>arr[j+1]:
arr[j],arr[j+1]=arr[j+1],arr[j]
think(arr)
print("冒泡排序为:")
for i in range(len(arr)):
print("%d" %arr[i])
输出结果为:1,2,3,4,5
简单易学(大神请勿喷)