大家都知道,关于python的算法有很多,其中最为复杂的就是python的排序算法,因为它并不是单一的,而是复杂的,关于排序算法就有好几种不同的方式,大家可以根据以下内容,结合自己的项目需求,选择一个最佳的算法。

1、插入排序:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

代码如下:#L=[5,2,3,1,6,9]

# def insert_sort(list):

# leng=len(list);//求list长度

# for i in range(1,leng):

# temp=list[i];//设置哨兵

# j=i;

# while(j>0 and list[j-1]>temp):

# list[j]=list[j-1];//大的元素后移

# j=j-1;

# list[j]=temp;//遇到比哨兵小的元素,将其设置为哨兵

# return list;

# print(insert_sort(L))

2、冒泡排序:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到

结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来

越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

代码如下:# def bubble_sort(list):

# leng=len(list);

# for i in range(0,leng)://控制趟数

# flag=True

# for j in range(1,leng-i):

# if list[j-1]>list[j]:

# flag=False;

# list[j-1],list[j]=list[j],list[j-1];//交换这两个数

# if flag:

# break

# return list;

# L=[9,5,6,8,4,2]

# print(bubble_sort(L))

3、选择排序:它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全

部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。

代码如下:# def select_sort(list):

# leng=len(list)

# for i in range(0,leng):

# min=i //设置哨兵,假设第一个元素是最小的

# for j in range(i+1,leng):

# if list[j]

# min=j //开始寻找比哨兵小的元素。如果小则将重新设置哨兵位置

# if min!=i:

# list[i],list[min]=list[min],list[i]#交换这两个数

# return list

# L=[-4,1,2,5,3,-2]

4、快速排序:它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的

所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

代码如下:# def partition(list,low,high)://划分算法

# key=list[low]

# while(low

# while(low=key):high=high-1

# if low

# list[low]=list[high]

# low=low+1

# while(low

# if low

# list[high]=list[low]

# high=high-1

# list[low]=key

# return low

#

# def quick_sort(list,low,high)://快速排序算法

# if low

# pos=partition(list,low,high)

# quick_sort(list,low,pos-1)

# quick_sort(list,pos+1,high)

# return list

# L=[45,12,-32,65,28,9,-75,34]

# print(quick_sort(L,0,len(L)-1))

5、堆排序:堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。

代码如下:#堆排序

# def HeapAdjust(list,pos,len)://调整堆算法

# lchild=2*pos+1

# rchild=2*pos+2

# min=pos

# if pos<(len-1)/2:

# if lchild

# min=lchild;

# if rchild

# min=rchild;

# if min!=pos:

# list[pos],list[min]=list[pos],list[min]

# HeapAdjust(list,min,len)

# return list

#

# def BuildHeap(list,len)://建堆算法

# i=len/2-1

# while(i>=0):

# HeapAdjust(list,i,len)

# i=i-1

# return list

#

# def Heap_sort(list,len)://堆排序算法

# BuildHeap(list,len)

# while(len):

# list[0],list[len-1]=list[len-1],list[0]

# len=len-1

# HeapAdjust(list,len,0)

# return list

#

# L=[45,12,-32,65,28,9,-75,34]

# print(Heap_sort(L,len(L)))

好了,以上就是关于python常见的排序算法以及用法了,相信大家结合学习,一定更加深印象。如需了解更多python实用知识,点击进入PyThon学习网教学中心。

python常用算法有哪些_python常见的排序算法有哪些?相关推荐

  1. python常用算法有哪些_python常见排序算法基础教程

    前言:前两天腾讯笔试受到1万点暴击,感觉浪费我两天时间去牛客网做题--这篇博客介绍几种简单/常见的排序算法,算是整理下. 时间复杂度 (1)时间频度一个算法执行所耗费的时间,从理论上是不能算出来的,必 ...

  2. 搭建直播网站时使用 Python 实现几种常见的排序算法

    排序是非常常见的算法,今天就来分享几种常见排序算法的 Python 实现 冒泡排序 冒泡排序是最为基础的排序算法,其核心思想就是相邻元素两两比较,把较大的元素放到后面,在一轮比较完成之后,最大的元素就 ...

  3. java python算法_用Python,Java和C ++示例解释的排序算法

    java python算法 什么是排序算法? (What is a Sorting Algorithm?) Sorting algorithms are a set of instructions t ...

  4. anaconda matplotlib 输出动画_Python+Matplotlib 制作排序算法的动画

    1 .算法的魅力 深刻研究排序算法是入门算法较为好的一种方法,现在还记得4年前手动实现常见8种排序算法,通过随机生成一些数据,逐个校验代码实现的排序过程是否与预期的一致,越做越有劲,越有劲越想去研究, ...

  5. JS 常见的排序算法

    工作中算法不常用,但是排序经常用.因此在这里整理了几种JS中常见的排序算法. 冒泡排序 1.算法思想:判断两个相邻元素,大于则交换位置 2.算法步骤 从数组中第一个数开始,依次与下一个数比较并次交换比 ...

  6. 七种常见的排序算法总结

    目录 引言 1.什么是排序? 2.排序算法的目的是什么? 3.常见的排序算法有哪些? 一,插入排序 1.基本思想 2.代码实现 3.性能分析 4.测试 二,希尔排序(缩小增量排序) 1.基本思想 2. ...

  7. 基于比较的常见的排序算法

    目录 写在前面 排序 稳定性 排序的分类 常见的基于比较的排序 直接插入排序 代码 性能分析 总结 代码优化 折半插入 希尔排序 希尔排序 如何分组 代码 性能分析 选择排序 代码 性能分析 双向选择 ...

  8. 常见的排序算法与MSQL

    常见的排序算法 1.常见的排序算法 冒泡排序法.快速排序法.简单选择排序法.堆排序法.直接插入排序法.希尔排序法.合并排序法. (1)冒泡排序法:对待排序记录关键字从后往前(逆序)进行多遍扫描,当发现 ...

  9. access两字段同时升序排序_7 天时间,我整理并实现了这 9 种常见的排序算法

    排序算法 回顾 我们前面已经介绍了 3 种最常见的排序算法: java 实现冒泡排序讲解 QuickSort 快速排序到底快在哪里? SelectionSort 选择排序算法详解(java 实现) 然 ...

最新文章

  1. python的集合类型——字符串、列表、元组、字典
  2. 一个完整的Windows程序框架
  3. 用python同时画多个分布图
  4. jquery Ajax请求本地json
  5. LeetCode 765. 情侣牵手(贪心)
  6. echarts legend不显示_ECharts地图系列一(定制区域水波纹显示,以及其他区域圆点颜色不统一)...
  7. Odoo10参考系列--QWeb报表
  8. 韩国冬奥:未来科技奥运我要长这样,阿里巴巴:你尽管想
  9. STM32 MDK常见错误与解决
  10. set 存放类或结构体的打印
  11. UI设计师——你是什么设计师?
  12. axis wsdl2java 命令_axis2常用命令(wsdl2java)
  13. 视频编解码之H.264
  14. 详细图解,一眼就能看懂!卷帘快门(Rolling Shutter)与全局快门(Global Shutter)的区别
  15. 报错:xxx.foreach is not a function
  16. 帝国理工大学计算机本科笔试题,共同努力 成功申请帝国理工学院计算机科学专业...
  17. 配置MyBatis Plus 的乐观锁功能
  18. docker 创建redis容器
  19. IDEA 隐藏窗口标题栏(去掉 Win10 白色标题栏)
  20. typechoSEO站点收录插件推荐

热门文章

  1. mac node oracle,将Python3.5(Mac OS X El Capitan)连接到Oracle集群(远程)
  2. 京东抢购助手_[Windows] 京东极速抢购助手V2.0,支持京东健康+扫货抢购
  3. Python实现给指定的微信朋友发信息
  4. python写程序注意事项(很重要)
  5. Linux基本操作指南
  6. Python基础(六)--类与对象
  7. 面试必备!卖萌屋算法工程师思维导图—统计机器学习篇
  8. Android官方开发文档Training系列课程中文版:创建自定义View之View的优化
  9. 星地融合→→→6G移动通信关键技术的未来
  10. phpmyadmin登陆错误:The requested URL /phpmyadmin was not found on this serve