1.排序算法
1.1冒泡排序
从小到大排序,第一轮将最大的泡浮到最后,第二轮将次大的泡浮到倒数第二个,…
def bubble_sort(array):
for i in range(1,len(array)):
for j in range(0,len(array)-i):
if array[j]>array[j+1]:
array[j],array[j+1]=array[j+1],array[j]
return array
1.2选择排序
第一轮目标是找出所有数中的最小数放第一个,第二轮是找出剩余数的最小数放第二个,…那第一轮从位置0开始找后面的数挑衅,我是最小的,遇到比我的就偷偷记下座位号,一轮结束后才和最小的交换位置。
def select_sort(array):
for i in range(len(array)-1):
minIndex=i
for j in range(i+1,len(array)):
if array[j]<array[minIndex]:
minIndex=j
if minIndex!=i:
array[minIndex],array[i]=array[i],array[minIndex]
return array
1.3 快速排序
以第一个位置为标杆,去度量其他元素是白富美还是矮穷矬,矮穷矬在标杆左边,白富美在标杆右边。又在矮穷矬中划分阶层,找矮穷挫里的矮穷挫和白富美,递归调用,直到队列中元素为空。
def quick_sort(array):
if array==[]:
return []
else:
first=array[0]
left=quick_sort([l for l in array[1:] if l<first])
right=quick_sort([r for r in array[1:] if r>=first])
return left+[first]+right
1.4插入排序
将数字从未排序的组分到已排序的组。
每个数据要跟前面的有序数组里的元素进行比较,每次出现比有序数组中元素小,就要和它交换顺序,直到合适的插到有序数组中才行。
def insert_sort(array):
for i in range(1,len(array)):
for j in range(i,0,-1):
if array[j]<array[j-1]:
array[j-1],array[j]=array[j],array[j-1]
return array