iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现快速排序和插入排序算法及自定义排序的示例
  • 379
分享到

Python实现快速排序和插入排序算法及自定义排序的示例

自定义示例算法 2022-06-04 19:06:39 379人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

一、快速排序 快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据

一、快速排序

快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

快速排序,递归实现


def quick_sort(num_list):
  """
  快速排序
  """
  if num_list == []:
    return num_list
  smallList = []
  bigList = []
  middleElement = num_list[0]
  for i in num_list[1:]:
    if i <= middleElement:
      smallList.append(i)
    else:
      bigList.append(i)
  return quick_sort(smallList)+[middleElement]+quick_sort(bigList)


二、插入排序

插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

插入排序


def insert_sort(num_list):
  """
  插入排序
  """
  for i in range(len(num_list)-1):
    for j in range(i+1, len(num_list)):
      if num_list[i]>num_list[j]:
        num_list[i],num_list[j] = num_list[j],num_list[i]
  return num_list


三、自定义排序
利用 sort() 或 sorted() 的 key 即可实现。

示例如下:


def sort_key(obj):
  sorted_list = [4, 2, 5, 9, 7, 8, 1, 3, 6, 0]
  return sorted_list.index(obj)
 
 
if __name__ == '__main__':
  print sorted(range(10), key=sort_key)
 
# 输出结果如下
[4, 2, 5, 9, 7, 8, 1, 3, 6, 0]


# 利用关键字在列表中的索引位置,进行自定义排序

--结束END--

本文标题: Python实现快速排序和插入排序算法及自定义排序的示例

本文链接: https://www.lsjlt.com/news/15393.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python实现快速排序和插入排序算法及自定义排序的示例
    一、快速排序 快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据...
    99+
    2022-06-04
    自定义 示例 算法
  • 快速排序的算法思想及Python版快速排序的实现示例
    快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 1.分治法的基本思想 分治法的基本思想是:...
    99+
    2022-06-04
    快速 示例 算法
  • Python实现快速排序算法及去重的快速排序的简单示例
    快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用。 该方法的基本思想是: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它...
    99+
    2022-06-04
    快速 示例 算法
  • Python实现桶排序与快速排序算法结合应用示例
    本文实例讲述了Python实现桶排序与快速排序算法结合应用的方法。分享给大家供大家参考,具体如下: #-*- coding: UTF-8 -*- import numpy as np from Quic...
    99+
    2022-06-04
    示例 算法 快速
  • TypeScript十大排序算法插入排序实现示例详解
    目录一. 插入排序的定义二. 插入排序的流程三. 插入排序的图解四. 插入排序的代码五. 插入排序的时间复杂度六. 插入排序的总结一. 插入排序的定义 插入排序就像是你打扑克牌,你...
    99+
    2023-02-23
    TypeScript插入排序算法 TypeScript 算法
  • Java中插入排序算法之希尔排序+直接插入排序的示例分析
    这篇文章给大家分享的是有关Java中插入排序算法之希尔排序+直接插入排序的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。希尔排序在介绍希尔排序之前,先了解一下直接插入排序一、直接插入排序1. 单趟排序x插...
    99+
    2023-06-25
  • C#实现冒泡排序和插入排序算法
    1.选择排序(冒泡排序) 升序 用第一个元素跟其他元素比较,如果该元素比其他元素,则交换,保证该元素是最小的。然后再用第二个元素跟后面其他的比较,保证第二个元素是除第一个最小的。依次...
    99+
    2022-11-13
  • Java实现快速排序和堆排序的示例代码
    目录快速排序算法步骤动图演示JavaScript代码实现python代码实现Go代码实现C++代码实现Java代码实现堆排序算法步骤动图演示JavaScript代码实现Python代...
    99+
    2022-12-22
    Java快速排序 Java 堆排序 Java排序
  • Python快速排序算法实例分析
    本文实例讲述了Python快速排序算法。分享给大家供大家参考,具体如下: 快速排序的时间复杂度是O(NlogN) 算法描述: ① 先从序列中取出一个数作为基准数 ② 分区过程, 将比这个数大的数全部放到它的...
    99+
    2022-06-04
    算法 实例 快速
  • C#怎么实现冒泡排序和插入排序算法
    这篇文章主要讲解了“C#怎么实现冒泡排序和插入排序算法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么实现冒泡排序和插入排序算法”吧!1.选择排序(冒泡排序)升序用第一个元素跟其他元素...
    99+
    2023-06-30
  • 怎么在Python中利用排序算法实现插入排序
    怎么在Python中利用排序算法实现插入排序,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、插入排序插入排序与我们平时打扑克牌非常相似,将新摸到的牌插入到已有的牌中合适的位置...
    99+
    2023-06-15
  • C语言实现交换排序算法(冒泡,快速排序)的示例代码
    目录前言一、冒泡排序1.基本思想2.优化3.扩展二、快速排序1.基本思想2.优化3.代码前言 查找和排序是数据结构与算法中不可或缺的一环,是前辈们在算法道路上留下的重要且方便的一些技...
    99+
    2022-11-13
  • python快速排序算法怎么实现
    快速排序是一种常用的排序算法,其算法思想是通过递归地将数组分为较小和较大的两个子数组,然后不断重复这个过程,直到整个数组有序。下面是...
    99+
    2023-08-15
    python
  • 使用 Python 实现快速排序算法
    快速排序是一种高效的排序算法,它采用分治法的思想进行排序。在 Python 中,我们可以使用以下代码实现快速排序算法: def quick_sort(arr): if len(arr) ...
    99+
    2023-09-02
    排序算法 算法
  • 详解Python排序算法的实现(冒泡,选择,插入,快速)
    目录1. 前言2. 冒泡排序算法2.1 摆擂台法2.2 相邻两个数字相比较3. 选择排序算法4. 插入排序5. 快速排序6. 总结1. 前言 所谓排序,就是把一个数据群体按个体数据的...
    99+
    2022-11-10
  • Java实现直接插入排序与折半插入排序的示例详解
    目录1.直接插入排序2. 折半插入排序1.直接插入排序 插入排序的基本思想: 主要分为两个区间, 无序区间和有序区间, 每次选择无序区间的第一个元素, 在有序区间内选择合适的位置进行...
    99+
    2022-11-13
  • Python实现的桶排序算法示例
    本文实例讲述了Python实现的桶排序算法。分享给大家供大家参考,具体如下: 桶排序也叫计数排序,简单来说,就是将数据集里面所有元素按顺序列举出来,然后统计元素出现的次数。最后按顺序输出数据集里面的元素。 ...
    99+
    2022-06-04
    示例 算法 Python
  • Python实现希尔排序,归并排序和桶排序的示例代码
    目录1. 前言2. 希尔排序2.1 前后切分2.2 增量切分3. 归并排序3.1 分解子问题3.2 求解子问题3.3 合并排序4. 基数排序5. 总结1. 前言 本文将介绍希尔排序、...
    99+
    2022-11-10
  • C语言实现快速排序算法实例
    首先我们要对一组数据进行排序: 在数组中选一个基准数(通常为数组第一个,黄圈圈标记了); 将数组中小于基准数的数据移到基准数左边,大于基准数的移到右边,怎么移动,后面说; 对于基准数...
    99+
    2022-11-13
  • Python中怎么实现快速排序算法
    Python中怎么实现快速排序算法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python实现快速排序算法快速排序算法是一种基于交换的高效的排序算法,由C.R.A.Hoare...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作