视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
使用python实现排序算法-快速排序
2020-11-27 14:17:10 责编:小采
文档

快速排序的基本思想:

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

例:

arr = [49,38,04,97,76,13,27,49,55,65],设置第一位49为key值,从右向左找到比key值小的数,把找到的数赋值给第一位数;

arr = [27,38,04,97,76,13,27,49,55,65],然后从左第一位向右找到比key值大的数,把找到的数赋值给上个从右向左找到的数;

arr = [27,38,04,97,76,13,97,49,55,65],然后从右向左,从左向右,直到left=right,跳出循环,并把key值赋值给些索引值。最后再对两边的分组进行递归。

代码:

def quick_sort(lists, left, right):
 #快速排序
 if left >= right: #当递归调用的分组为1个数时返回列表
 return lists
 key = lists[left] #保存key值,在一轮调用结束时,存到中间值
 low = left
 high = right #供递归调用时使用
 while left < right: #通过下面两个循环依次交替赋值并使key值两侧为大小分组
 while left < right and lists[right] >= key: 
 right -= 1
 lists[left] = lists[right]
 while left < right and lists[left] <= key:
 left += 1
 lists[right] = lists[left]
 lists[right] = key
 quick_sort(lists, low, left-1) #对key值左侧进行排序分组
 quick_sort(lists, left+1, high) #对key值右侧进行排序分组
 return lists

下载本文
显示全文
专题