快速排序
核心在于选择一个值后,每次把剩下的所有值归到比这个值大的一边和小的一边,然后对于比如大的一边里面,继续递归的重复这个过程。
## 快速排序
def quick_sort(li):
# 当数组长度大于1的时候才需要排序递归下去
if len(li)>1 :
# 重要的第一步,取出C位的那个数字作为基准
mid = li[len(li)//2]
right=[]
left=[]
#移除基准后,剩下的数字逐个和基准比
li.remove(mid)
for i in range(len(li)):
#比基准大的放新的右列表中,比基准小的放左列表中
if li[i]>=mid:
right.append(li[i])
else:
left.append(li[i])
# 下面这部是最核心的一步,归出来的左右列表继续递归
return quick_sort(left)+[mid]+quick_sort(right)
else : return li
if __name__ == '__main__':
li=[66,21,4,56,78,5,65]
b=quick_sort(li)
print(b)
冒泡排序
核心在于从某个数(一般是第一个)开始跟隔壁比大小,然后不断交换,这样如果是从小到大排列,从左开始比,第一轮下来,最大的数就会到最后一个排好。
# 冒泡排序
def bubble_sort(li):
# 建立一个标识符,这样如果某一次一个数都没交换,则标识符为false,则不需要继续下去了,能节省几次循环
flag = False
# 从第一个数开始比,最差只需要比总长度-1次
for i in range(len(li)-1):
# 第i个数比的时候,只需要和去掉最后i个再去掉本身1个的里面比
for j in range(len(li)-i-1):
# 如果本数字大于后一个,就交换位置
if li[j] > li[j+1]:
li[j], li[j+1] = li[j+1], li[j]
flag = True
if flag==False: break
return li
if __name__ == '__main__':
li=[66,21,4,56,78,5,65]
a=bubble_sort(li)
print(a)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。