最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

使用python实现8大排序算法-快速排序

来源:懂视网 责编:小采 时间:2020-11-27 14:17:10
文档

使用python实现8大排序算法-快速排序

使用python实现8大排序算法-快速排序:快速排序的基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序。例: arr = [49,38
推荐度:
导读使用python实现8大排序算法-快速排序:快速排序的基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序。例: arr = [49,38

快速排序的基本思想:

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

例:

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

文档

使用python实现8大排序算法-快速排序

使用python实现8大排序算法-快速排序:快速排序的基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序。例: arr = [49,38
推荐度:
标签: 排序 python 算法
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top