做有温度的教育!
全国统一咨询热线:18003608300
北京
校区
首页> 知识宝藏分享,为您打开学习之门 > 技术分享

Python的排序算法

时间:2019-04-22
浏览:5552
发布:来源:
赞:5552

在大数据开发中我们经常会面对上百万条数据,并将他们按照一定的顺序排列,合理的排序方法可以让我们保持高效的开发效率,直观展现数据。这里给大家介绍几种简单的排序方法!


一、冒泡排序

bubble_list=[4,213,5,6,12,123,45,66,43]def bubble(array):

for i in range(len(array)-1): ##外循环,每次循环找出值放在***右边,下一次则忽略前面循环找出的数

for j in range(len(array)-1-i): ##内循环,和下一个数比较,若第一个数较大,则进行交换

if array[j]>array[j+1]:

tmp=array[j]

array[j]=array[j+1]

array[j+1]=tmp

bubble(bubble_list)print "Final:%s" % bubble_list

Final:[4, 5, 6, 12, 43, 45, 66, 123, 213]


二、选择排序

select_list=[25,213,5,6,12,123,45,66,43]

def select(array):

for i in range(len(array)-1): ##从第一个数开始依次与后面的数对比,若有数比数组中第一个小,则进行交换。循环len(array)-1次。

for j in range(i+1,len(array)):

if array[i]>array[j]:

tmp=array[i]

array[i]=array[j]

array[j]=tmpselect(select_list)

print "Final:%s" % select_list

这样的选择排序有一个弊端,i每次循环,都可能有很多数据交换过程,因此,怎样解决这样的问题呢?

只需要引入一个变量,least_index每次判断大小后,只需要把数值更小的下标赋值给least_index即可。

select_list=[25,213,5,6,12,123,45,66,43]def select_plus(array):

for i in range(len(array)-1):

least_index=i

for j in range(i+1,len(array)):

if array[least_index]>array[j]:

least_index=j

tmp=array[i]

array[i]=array[least_index]

array[least_index]=tmp

select_plus(select_list)print "Final:%s" % select_list


三、插入排序

insert_list=[25,213,5,6,12,123,45,66,43]def insert(array):

for i in range(1,len(array)): #从数组中第二个数与与左边的数进行对比

position=i

current_var=array[position] ##保留array[i]中的值

while array[position-1]>current_var and position>0: ##当左边的数大于插入数,则将两数进行交换,直到数组进行到数组首位

array[position]=array[position-1]

array[position-1]=current_var

position-=1

insert(insert_list)print "Final:%s" % insert_list

Final:[5, 6, 12, 25, 43, 45, 66, 123, 213]


四、快速排序

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

quick_list = [69, 471, 106, 66, 149, 983, 160]

def quickSort(L, low, high):

i = low

j = high

if i >= j:

return L

key = L[i]

while i < j:

while i < j and L[j] >= key:

j = j-1

L[i] = L[j]

while i < j and L[i] <= key:

i = i+1

L[j] = L[i]

L[i] = key

quickSort(L, low, i-1)

quickSort(L, j+1, high)

return

quickSort(quick_list,0,len(quick_list)-1)

print quick_list


【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息联系我们,我们将及时沟通与处理。本站内容除非来源注明甲骨文华育兴业,否则均为网友转载,涉及言论、版权与本站无关。

精彩推荐

友情链接: bif

Copyright ©2016-2020. All Rights Reserved. 京ICP备17018991号-4