首页 > 编程语言 >快速排序 python

快速排序 python

时间:2022-12-23 22:22:27浏览次数:34  
标签:__ right python list1 lists 基轴 排序 快速 left

  1. 步骤

    在一序列中定一个轴为基轴(通常为了方便定最左那个数),定序列左右指针,右指针开始扫描,比基轴大则指针继续往前扫,当扫到比基轴小时,把这个数放到最左边,再开始扫左边指针,遇到比较大的数则放到最右方,当两指针相遇时,把基轴的那位数放到这个位置上,递归执行,直至扫到左右序列长度为一时返回;

   2.复杂度,平均复杂度为nlogn

  3.代码

def quick_sort(lists, low, high):
if low >= high:
return
left = low
right = high
pivot = lists[left]
while left < right:
while left < right and lists[right] >= pivot:
right -= 1
if left < right:
lists[left] = lists[right]
while left < right and lists[left] <= pivot:
left += 1
if left < right:
lists[right] = lists[left]
if left >= right:
lists[left] = pivot
quick_sort(lists, low, left - 1)
quick_sort(lists, left + 1, high)


if __name__ == '__main__':
list1 = [4, 10, 22, 22, 10, 9]
quick_sort(list1, 0, len(list1) - 1)
print(list1)

标签:__,right,python,list1,lists,基轴,排序,快速,left
From: https://www.cnblogs.com/sardine96/p/17001750.html

相关文章

  • 力扣26(java&python)-删除有序数组中的重复项(简单)
    题目:给你一个升序排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。由于在某些语言中......
  • 归并排序
    本题要求实现二路归并排序中的归并操作,待排序列的长度1<=n<=1000。函数接口定义:1voidMerge(SqListL,intlow,intm,inthigh);其中L是待排序表,使排序后的数据从小......
  • 直接插入排序
    本题要求实现直接插入排序函数,待排序列的长度1<=n<=1000。函数接口定义:1voidInsertSort(SqListL);其中L是待排序表,使排序后的数据从小到大排列。###类型定义:1t......
  • 希尔排序的实现
    本题要求实现一趟希尔排序函数,待排序列的长度1<=n<=1000。函数接口定义:1voidShellInsert(SqListL,intdk);其中L是待排序表,使排序后的数据从小到大排列。###类型......
  • python归并排序
    采用了分治法,把序列不断的等分序列,最后分成一个之后,再把它两两合并叠加起来,利用了扑克牌两个正序序列进行排序合并时间复杂度nlogn代码defmerge_sort(lists):if......
  • 快速排序
    本题要求实现快速排序的一趟划分函数,待排序列的长度1<=n<=1000。函数接口定义:1intPartition(SqListL,intlow,inthigh);其中L是待排序表,使排序后的数据从小......
  • 堆排序
    本题要求实现堆排序中的筛选函数,待排序列的长度1<=n<=1000。函数接口定义:1voidHeapAdjust(HeapTypeH,ints,intm);其中L是待排序表,使排序后的数据从小到大排......
  • 初学python
    本章内容:Python的种类Python的环境Python入门(解释器、编码、pyc文件、脚步传入参数、变量、输入、流程控制与缩进、while循环)练习题Python的种类Cpyt......
  • python:文件操作:文件的读取
               ......
  • python:了解异常
    当检测到一个错误时,Python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”,也就是我们常说的BUGbug单词的诞生早期计算机采用大量继电器工作,马克......