简单的排序算法(冒泡,选择排序,快排,插入排序)
Posted iTesting
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的排序算法(冒泡,选择排序,快排,插入排序)相关的知识,希望对你有一定的参考价值。
iTesting,爱测试,爱分享
不多说,大家都知道算法在面试中有多重要。
来几道最简单的排序算法
1. #冒泡排序
# 冒泡排序(Bubble Sort)是一种简单直观的排序算法。
# 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
# 走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
# 这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
def bubble_sort(arr):
n = len(arr)
for i in range(n-1):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j],arr[j+1] = arr[j+1], arr[j]
return arr
print(bubble_sort([6,3,2,4,7,1]))
2. #选择排序
# 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,所以称为:选择排序。
def get_min(arr):
min = 0
for i in range(1, len(arr)):
if arr[min] > arr[i]:
min = i
return min
def select_sort(arr):
n = len(arr)
return_list =[]
for i in range(n):
min = get_min(arr)
return_list.append(arr.pop(min))
return return_list
print(select_sort([6,3,2,4,7,1]))
3. #快速排序
# 随机选择列表中的一个值作为中间值,将整个列表分割成两半。这个值称为base。
# 建立两个空列表,分别是left 和right
# 遍历整个列表,比base大的值都放right, 比base小的放left
# 对left 和right分别做快速排序
def quick_sort(arr):
if len(arr) <= 1:
return arr
base = arr[0]
left = []
right = []
for i in range(1, len(arr)):
if arr[i] > base:
right.append(arr[i])
else:
left.append(arr[i])
return quick_sort(left) + [base] + quick_sort(right)
print(quick_sort([6,3,2,4,7,1]))
4. #插入排序
#先排好序,再插入, 插入可以用二分法找位置
def insert_sort(arr, target):
arr = quick_sort(arr)
for i in range(len(arr)):
if arr[i]>target:
arr.insert(i, target)
return arr
print(insert_sort([6,3,2,4,7,1], 0))
技术讨论
- - 时人莫小池中水, 浅处不妨有卧龙 - -
Kevin Cai, 江湖人称蔡老师。
两性情感专家,非著名测试开发。
技术路线的坚定支持者,始终相信Nobody can be somebody。
· 猜你喜欢的文章 ·
以上是关于简单的排序算法(冒泡,选择排序,快排,插入排序)的主要内容,如果未能解决你的问题,请参考以下文章
Java排序算法分析与实现:快排冒泡排序选择排序插入排序归并排序