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(" 排序后的序列为:") 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))