python算法-冒泡排序、选择排序、快速排序、二分查找
1、冒泡排序
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
list1=[2,5,1,4,6,3,7]
#冒泡排序由小到大
def bubblesort(list):
for i in range(0,len(list)):
for j in range(0,len(list)-i-1):
if(list[j]>list[j+1]):
list[j],list[j+1]=list[j+1],list[j]
return list
print(bubblesort(list1))

2、选择排序
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
list1=[2,5,1,4,6,3,7]
#选择排序由小到大
def choosesort(list):
for i in range(0,len(list)):
min_index=i
for j in range(i+1,len(list)):
if(list[j]<list[min_index]):
list[j],list[min_index]=list[min_index],list[j]
return list
print(choosesort(list1))

3、快速排序
参考:https://zhuanlan.zhihu.com/p/63227573
def quick_sort(lists,start,end):
if start >= end:
return list
else:
pivot = lists[start]#设置基准数
i,j=start,end
while i < j:
while i < j and lists[j] >= pivot:
j -= 1
lists[i] = lists[j]
while i < j and lists[i] <= pivot:
i += 1
lists[j] = lists[i]
lists[j] = pivot
quick_sort(lists, start, i - 1)
quick_sort(lists, i + 1, end)
return lists
if __name__=="__main__":
lists=[30,24,5,58,18,36,39,12,42,39]
print("排序前的序列为:")
for i in lists:
print(i,end =" ")
print("\n排序后的序列为:")
for i in quick_sort(lists,0,len(lists)-1):
print(i,end=" ")

4、二分查找
def binnerFind(arr, key):
start=0
end=len(arr)-1
while start<=end:
mid=(start+end)//2
if arr[mid]==key:
return mid
elif arr[mid]>key:
end=mid-1
elif arr[mid]<key:
start=mid+1
return -1
arr= [3, 6, 12, 17, 25, 32, 43, 55]
print("索引为:%s"%binnerFind(arr, 25))
print("索引为:%s"%binnerFind(arr, 199))

参考:https://www.runoob.com/python3/python3-examples.html
posted on 2020-05-12 16:51 crystal1126 阅读(258) 评论(0) 收藏 举报
浙公网安备 33010602011771号