快速排序

基本思想是:从一个数组中随机选出一个数N,通过一趟排序将数组分割成三个部分,1、小于N的区域 2、等于N的区域 3、大于N的区域,然后再按照此方法对小于区的和大于区分别递归进行,从而达到整个数据变成有序数组。

#实现第一次排序,之后使用递归方法完成以后的排序
def quick_sort(list,start,end):
left = start
right = end
key = list[left]#找到一个关键数字,一般为第一个元素
while left < right:
#从最后一个元素开始向前与关键字key比较直到left=right 或右边的数字小于关键字为止
while left < right and list[right] >= key:
right -=1
list[left],list[right] = list[right],list[left]
#从左边的第一个元素开始向后域关键字比较直到left=right 或左边的数字大于关键字为止
while left < right and list[left] <= key:
left +=1
list[left], list[right] = list[right], list[left]
return list
list = [6,2,7,3,9,8]
print(quick_sort(list,0,len(list)-1))
————————————————————————————————
def quick_sort(list,start,end):
left = start
right = end
if left <right:
key = list[left]#找到一个关键数字,一般为第一个元素
while left < right:
#从最后一个元素开始向前与关键字key比较直到left=right 或右边的数字小于关键字为止
while left < right and list[right] >= key:
right -=1
list[left],list[right] = list[right],list[left]
#从左边的第一个元素开始向后域关键字比较直到left=right 或左边的数字大于关键字为止
while left < right and list[left] <= key:
left +=1
list[left], list[right] = list[right], list[left]
#将列表中关键字的地方左右分为两组
quick_sort(list,start,left-1)#左边的分组
quick_sort(list,right+1,end)#右边的分组
return list
list = [6,2,7,3,9,8]
print(quick_sort(list,0,len(list)-1))

插入排序

插入排序的基本操作就是将一个数据插入到已经排序好的有序数据中,从而得到一个新的,个数加一的有序数据,算法适用于少量数据的排序

有一个已经有序的序列,要求在这个已经排好的数据序列中插入一个数,要求插入后数据序列仍然有序,此时使用插入排序

插入排序的的步骤

  1、从第一个元素开始,该元素认为是已经排序好的

  2、取出下一个元素,在已经排序好的元素序列中从后向前扫描

  3、如果该元素(已经排序好的)大于新元素则将该元素移到下一位置

  4、重复步骤3,直到找到已经排好的元素小于或等于该元素为止

  5、将新元素插入到下一位置中

  6、重复2~5的步骤

def insert_sort(list):
#循环次数
for i in range(1,len(list)):
#确定关键数字
key = list[i]
j = i-1
while j >=0 and list[j] > key:
# 如果该元素(已经排序好的)大于新元素(key)则将该元素移到下一位置
list[j+1] = list[j]
j-=1
#将该元素(key)插入到下一个位置中
list[j+1] = key
return list
list = [4,5,25,74,1,3,4,]
print(insert_sort(list))

python_排序的更多相关文章

  1. python_如何对字典进行排序?

    案例: 某班英语成绩以字典的形式存储为: {'lili':78, 'jin':50, 'liming': 30, ......} 依据成绩高低,进行学生成绩排名 如何对字典排序? 方法1: #!/us ...

  2. Python_每日习题_0005_三数排序

    # 题目: # 输入三个整数x,y,z,请把这三个数由大到小输出. # 程序分析: 练练手就随便找个排序算法实现一下,偷懒就直接调用函数. #方法一:排序 raw = [] for i in rang ...

  3. python_选择排序

    #选择排序 def insert_sort(li): for i in range (1,len(li)): # i表示摸到牌的下标 tem = li[i] j = i - 1 # j 是初始手中的牌 ...

  4. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  5. iOS可视化动态绘制八种排序过程

    前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...

  6. JavaScript实现常用的排序算法

    ▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...

  7. [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序

    用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html  目录 马桶排序(令人 ...

  8. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  9. 算法与数据结构(七) AOV网的拓扑排序

    今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...

随机推荐

  1. 基于SkyWalking的分布式跟踪系统 - 异常告警

    通过前面2篇文章我们搭建了SW的基础环境,监控了微服务,能了解所有服务的运行情况.但是当出现服务响应慢,接口耗时严重时我们需要立即定位到问题,这就需要我们今天的主角--监控告警,同时此篇也是SW系列的 ...

  2. Kong07-自定义 Kong 插件

    在进一步讨论之前,有必要简要说明 Kong 是如何构建的,特别是它是如何与 Nginx 集成的,以及 Lua 与它有什么关系. 在 Nginx 中,lua-nginx-module 模块支持 Lua ...

  3. 在mac上用parallels创建双windows虚拟机调试windows驱动

    先创建两个windows 7 虚拟机,一个装windbg作为调试机,一个被调试 1 调试机 1 先装windbg https://developer.microsoft.com/en-us/windo ...

  4. [考试反思]0727NOIP模拟测试9

    啊哈?水到一个rk1? 谢谢诸位大佬放水让我这种人体验到了rk1的滋味. 怪怪的滋味.不太像我的水平. 其实这次考试心态已经佛了,刚意识到前6次考试累计的挺高的分数被清空了,7,8两场又爆炸了... ...

  5. vue+element UI以组件递归方式实现多级导航菜单

    介绍 这是一个是基于element-UI的导航菜单组件基础上,进行了二次封装的菜单组件,该组件以组件递归的方式,实现了可根据从后端接收到的json菜单数据,动态渲染多级菜单的功能. 使用方法 由于该组 ...

  6. P3084 [USACO13OPEN]照片(差分约束)

    (已经有了简化版题面) 又秒了一次dp233 本来按照感觉瞎写了一发... 但还是老老实实列式子吧.... 对差分约束有了更深的理解 #include<cstdio> #include&l ...

  7. 【原创】使用批处理脚本自动生成并上传NuGet包

    Hello 大家好,我是TANZAME,我们又见面了. NuGet 是什么这里就不再重复啰嗦,园子里一搜一大把.今天要跟大家分享的是,在日常开发过程中如何统一管理我们的包,如何通过批处理脚本生成包并自 ...

  8. [java] 笔记 from黑马

    1. 关于String的创建.   PS:String的底层是用字节数组来实现的. 2.字符串常量池的笔记 具体指向是如下图的, 注意看0x666和0x999这两个地址. 3.原因如下: 4. 5. ...

  9. 破解微擎安装,免费搭建微擎,免费破解微擎,微擎破解版本,最新版本V2.1.2,一键安装!!

    ​ 微擎是一款基于WEB2.0(PHP+Mysql)技术架构,免费开源的公众平台管理系统,一款致力于将小程序和公众号商业化.智慧化.场景化的自助引擎.微擎提供公众号.微信小程序.支付宝小程序.百度熊掌 ...

  10. 配置SElinux环境,将SELinux设置为enforcing

    SELinux是 美国国家安全局 (NSA) 对于 强制访问控制的实现 =>可以使root受限的权限 关闭SELinux=>修改配置文件,永久生效; sed -i 's/SELINUX=e ...