您的位置:首页 > 编程语言 > Python开发

Python实现几种常见排序代码

2017-07-12 15:00 357 查看
插入排序法:

插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。

def insert_sort(lists):
# 插入排序
count = len(lists)
for i in range(1, count):
key = lists[i]
j = i - 1
while j >= 0:
if lists[j] > key:
lists[j + 1] = lists[j]
lists[j] = key
j -= 1

return lists


冒泡排序法

它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

def bubble(list):
m=len(list)
for i in range(len(list)-1):
m=m-1
for j in range(m):
if list[j]>list[j+1]:
list[j],list[j+1]=list[j+1],list[j]

return list


快速排序法:

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quicksort(left) + middle + quicksort(right)


直接选择排序:

基本思想:第1趟,在待排序记录r1 ~ r
中选出最小的记录,将它与r1交换;第2趟,在待排序记录r2 ~ r
中选出最小的记录,将它与r2交换;以此类推,第i趟在待排序记录r[i] ~ r
中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕

def select_sort(lists):
# 选择排序
count = len(lists)
for i in range(0,count):
min=i
for j in range(i+1,count):
if lists[min]>lists[j]:
min=j
lists[min],lists[i]=lists[i],lists[min]
return lists
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: