Python快速、插入、自定义排序实例分析

  • 时间:
  • 2229人关注

这篇文章主要介绍了Python实现快速排序和插入排序算法及自定义排序的示例,自定义排序用到了Python的sort和sorted函数,需要的朋友可以参考下,另外这篇文章主要知识点是关于Python、插入排序、快速排序、Python排序、Python排序的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子资料:

教程详情电子资料
  • 教程类别:Python排序
  • 编辑整理:康曼吟
  • 教程字数:1224字节
  • 阅读时间:大概14分钟
  • 下载本教程(DOC版)
  • Python数据分析:基于Plotly的动态可视化绘图
  • Python面试宝典
  • 趣学Python编程
  • Python PEP8编码规范
  • python学生信息管理系统
  • 这篇文章主要介绍了Python实现快速排序和插入排序算法及自定义排序的示例,自定义排序用到了Python的sort和sorted函数,需要的朋友可以参考下

    一、快速排序

    快速排序(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]

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

    以上就是Python快速排序,插入排序算法,自定义排序实例详解的详细内容,更多请关注码农之家其它相关文章!

    码农之家
    python中的set实现不重复的排序原理

    6小时47分钟前回答

    python中的set实现不重复的排序原理

    最近在尝试写选课系统的时候遇到一个问题:

      1、存在两个类 School、Teacher ;

      2、School实例中包含多个Teacher的实例,但又不可重复

      本人想到在School中用set()存储,但是添加Teacher实例的时候做不到去重,后来猜测应该是set会自动调用__eq__方法比较对象是否重复,因此重写了该方法:

    def __eq__(self, other):
      return self.name == other.name

       结果仍然报错TypeError: unhashable type,如下:

    python中的set实现不重复的排序原理

      研究了很久,发现Teacher无法hash的原因是该类中缺少__hash__方法,导致解释器不知道如何哈希该对象,添加以下代码后问题解决:

      def __hash__(self):
        return hash(self.name) 

      综上发现:

      如果想要将对象用set去重,需要重写__eq__和__hash__两个方法。

    总结

    以上所述是小编给大家介绍的python中的set实现不重复的排序原理,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对码农之家网站的支持!

    展开阅读

    上一篇:介绍Python中的__init__的作用

    下一篇:python中执行命令的方法总结

    相关内容

    • Python与PHP实现插入排序实例

      下面小编就为大家带来一篇插入排序_Python与PHP的实现版(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

      11-18插入排序_Python与PHP的实现版(推荐)

      阅读更多
    • 总结python八大排序算法速度示例比较

      这篇文章主要介绍了Python八大排序算法速度实例对比,具有一定参考价值,需要的朋友可以参考下。

      01-14python八大排序算法速度实例对比

      阅读更多
    • python list对象中嵌套元组使用sort时的排序方式

      下面小编就为大家分享一篇基于python list对象中嵌套元组使用sort时的排序方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

      01-23基于python list对象中嵌套元组使用sort时的排序方法

      阅读更多
    • Python实现插入排序和选择排序的实例内容详解

      这篇文章主要介绍了Python实现插入排序和选择排序的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

      08-29Python实现插入排序和选择排序的方法

      阅读更多
    • Python实现插入排序算法示例效果

      这篇文章主要介绍了Python实现的直接插入排序算法,结合实例形式分析了Python直接插入排序算法的定义与使用相关操作技巧,代码备有较为详尽的注释便于理解,需要的朋友可以参考下

      01-27Python实现的直接插入排序算法示例

      阅读更多
    • Python Matplotlib解决绘图X轴值不按数组排序问题

      这篇文章主要介绍了详解Python Matplotlib解决绘图X轴值不按数组排序问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起

      01-29详解Python Matplotlib解决绘图X轴值不按数组排序问题

      阅读更多
    • Python网络编程

      Python网络编程

      Python网络编程(第3版) 针对想要深入理解使用Python来解决网络相关问题或是构建网络应用程序的技术人员,结合实例讲解了网络协议、网络数据及错误、电子邮件、服务器架构和HTTP及Web应用程序

      大小:76.7 MBPython

      点击下载
    • Python全栈数据工程师养成攻略(视频)

      Python全栈数据工程师养成攻略(视频)

      本书介绍了数据工程和Python语法,随后讲解如何获取和存储数据,并实现简单的静态可视化,帮助读者将学习到关于Web建站的一些基础和进阶知识

      大小:129.7 MBPython全栈

      点击下载
    • Python网络数据采集

      Python网络数据采集

      大小:16.7 MBPython数据

      点击下载

    学习笔记

    3小时7分钟前回答

    Python实现八大排序算法

    如何用Python实现八大排序算法 1、插入排序 描述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为 O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插 入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。 代码实现 def insert_sort(lists): # 插入排序 count = len(lists) for i in range(1, count): key = lists[i] j = i - 1 while j = 0: i……

    47小时54分钟前回答

    Python实现对文件进行单词划分并去重排序操作示例

    本文实例讲述了Python实现对文件进行单词划分并去重排序操作。分享给大家供大家参考,具体如下: 文件名:test1.txt 文件内容: But soft what light through yonder window breaks It is the east and Juliet is the sun Arise fair sun and kill the envious moon Who is already sick and pale with grief 样例输出: Enter file name: "test1.txt" ['Arise', 'But', 'It', 'Juliet', 'Who', 'already', 'and', 'breaks', 'east', 'envious', 'fair', 'grief', 'is', 'kill', 'light', 'moon', 'pale', 'sick', 'soft', 'sun', 'the', 'through', 'what', 'window', 'with', 'yonder'] PR4E 用 append的写法:(二重循环) import sysfname = input("Enter file name: ")fh = open(fname)lst = list()for line in fh: line = line.rstrip() words = line.split() for word in words: if……

    34小时3分钟前回答

    Python实现的计数排序算法示例

    本文实例讲述了Python实现的计数排序算法。分享给大家供大家参考,具体如下: 计数排序是一种非常快捷的稳定性强的排序方法,时间复杂度O(n+k),其中n为要排序的数的个数,k为要排序的数的组大值。计数排序对一定量的整数排序时候的速度非常快,一般快于其他排序算法。但计数排序局限性比较大,只限于对整数进行排序。计数排序是消耗空间发杂度来获取快捷的排序方法,其空间发展度为O(K)同理K为要排序的最大值。 计数排序的基本思想为一组数在排序之前先统计这组数中其他数小于这个数的个数,则可以确定这个数的位置。例如要排序的数为 7 4 2 1 5 3 1 5;则比7小的有7个数,所有7应该在排序……