原文

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Jul 12 13:04:05 2021@author: ledi
"""def quick_sort(alist, start, end):"""快速排序"""if start >= end:  # 递归的退出条件returnmid = alist[start]  # 设定起始的基准元素print('mid=',mid)low = start  # low为序列左边在开始位置的由左向右移动的游标print('low=',low)high = end  # high为序列右边末尾位置的由右向左移动的游标print('high=',high)while low < high:# 如果low与high未重合,high(右边)指向的元素大于等于基准元素,则high向左移动print('mid=',mid,'alist[high]=',alist[high],'alist[low]=',alist[low])while low < high and alist[high] >= mid:high -= 1print('high-->',high)alist[low] = alist[high]  # 走到此位置时high指向一个比基准元素小的元素,将high指向的元素放到low的位置上,此时high指向的位置空着,接下来移动low找到符合条件的元素放在此处print('alist=',alist) # 如果low与high未重合,low指向的元素比基准元素小,则low向右移动print('mid=',mid,'alist[high]=',alist[high],'alist[low]=',alist[low])while low < high and alist[low] < mid:low += 1print('low-->',low)alist[high] = alist[low]  # 此时low指向一个比基准元素大的元素,将low指向的元素放到high空着的位置上,此时low指向的位置空着,之后进行下一次循环,将high找到符合条件的元素填到此处print('alist=',alist)print('##'*12)# 退出循环后,low与high重合,此时所指位置为基准元素的正确位置,左边的元素都比基准元素小,右边的元素都比基准元素大alist[low] = mid  # 将基准元素放到该位置,# 对基准元素左边的子序列进行快速排序quick_sort(alist, start, low - 1)  # start :0  low -1 原基准元素靠左边一位# 对基准元素右边的子序列进行快速排序quick_sort(alist, low + 1, end)  # low+1 : 原基准元素靠右一位  end: 最后if __name__ == '__main__':alist = [ 55, 44, 33, 22, 11]quick_sort(alist, 0, len(alist) - 1)print(alist)

python 快速排序相关推荐

  1. python快速排序 -两种方法

    python 快速排序 使用python实现快速排序 方法一 方法二 使用python实现快速排序 快速排序,⼜称划分交换排序 1.通过⼀趟排序将要排序的数据分割成独⽴的两部分, 其中⼀部分的所有数据 ...

  2. Python 快速排序算法【简单易懂,代码直接运行】

    Python 快速排序算法[简单易懂,代码直接运行] 给定你一个长度为 n 的整数数列. 请你使用快速排序对这个数列按照从小到大进行排序. 并将排好序的数列按顺序输出. 输入格式 输入共两行,第一行包 ...

  3. python 快速排序详解

    python 快速排序详解 快速排序函数 def partition(arr,low,high): i = ( low-1 ) #最小元素<索引>pivot = arr[high] #选取 ...

  4. python快速排序实现元素递增

    python快速排序实现元素递增 概念 1.快速排序法又称分割交换法,是冒泡排序法的改进. 基本思想 2.在数据中找到一个虚拟的中间值,然后将所有计划排序的数据分成两部分.在这些数据中,小于中间值的数 ...

  5. Python - 快速排序

    Python - 快速排序 手写一遍快速排序,加深记忆. # 准备被排序的数组 array_to_be_sorted = [int(i) for i in input().split()]def qu ...

  6. python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...

    前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...

  7. python快速排序解析_快速排序python实现总结

    算法 数据结构 快速排序python实现总结 背景:数据结构与算法是IT相关的工程师一直以来的基础考察重点,很多经典书籍都是用c++或者java来实现,出于对python编码效率的喜爱,于是取sear ...

  8. python快速排序算法循环_算法:快速排序的Python实现

    一.概述 快速排序(quick sort)是一种分治排序算法.该算法首先 选取 一个划分元素(partition element,有时又称为pivot):接着重排列表将其 划分 为三个部分:left( ...

  9. python快速排序代码_Python实现快速排序算法

    原标题:Python实现快速排序算法 Python实现快速排序算法 快速排序算法是一种基于交换的高效的排序算法,由C.R.A.Hoare于1962年提出,是一种划分交换排序.它采用了一种分治的策略,通 ...

  10. python 快速排序 详解_数据结构与算法:快速排序(原理讲解+python实现)

    快速排序 快速排序是一种基于分治法(Divide and Conquer)的排序算法 它之所以称为快速排序是因为它的平均时间复杂度为O(nlogn),最坏情况下是O(n2) 但是这样的情况不常见 一般 ...

最新文章

  1. Java成员变量与类变量_Java基础随记2-成员变量和类变量的区别
  2. android tab 悬停效果代码,Android 仿腾讯应用宝 之 Toolbar +Scroolview +tab滑动悬停效果...
  3. 2 Ways Thinking In Ajax
  4. 服务器标配 SSH 协议,你了解多少?
  5. Vue之webpack之Babel
  6. javascript异步代码的回调地狱以及JQuery.deferred提供的promise解决方式
  7. hermite插值c语言程序,张艳-埃尔米特Hermite 插值逼近的C语言程序.doc
  8. 国产操作系统产业深度解析
  9. 还没毕业,我就进了HR的黑名单!
  10. 微信屏蔽跳去App Store链接的解决方法
  11. 已解决KfcError: KFC Crazy Thursday WhoEver Gives me 50 CNY, I Will Thank Him.
  12. 简单易用的APP专项测试工具iTest4.7.0发布啦
  13. 推荐模型-基于知识图谱-2019:MKR
  14. 创建56个民族的sql语句
  15. Cnopendata国家基金项目数据简介
  16. 网络系统管理 7、DBMS(MariaDB)
  17. 006.Sql条件查询
  18. GDOI2017狗带记
  19. 犇牛(usp10.dll)专杀工具1.0下载
  20. 经典5000句(四)

热门文章

  1. 探秘Hadoop生态12:分布式日志收集系统Flume
  2. Windows 10的应用体验之二
  3. 15 sql base line 工作机制
  4. 使用VS2008怎么连接自带的SQL Server2005的Express版本数据库
  5. [C++再学习系列] 变量的声明、定义与extern关键字
  6. 如何根据CSD寄存器计算SD卡容量(csd v1.0 csd v2.0)
  7. 算法提高课-搜索-Flood fill算法-AcWing 1106. 山峰和山谷:flood fill、bfs
  8. SpringBoot用Servlet处理请求
  9. 计算机考研学长学什么,研究生学长浅谈考研心得
  10. 雅思作文未来计算机的应用,9分考官级雅思大作文范文之电脑技术的忧虑