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

 更新时间:2016年02月16日 17:30:40   作者:明天以后  
这篇文章主要介绍了Python实现快速排序和插入排序算法及自定义排序的示例,自定义排序用到了Python的sort和sorted函数,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

一、快速排序

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

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

相关文章

  • Windows下Sqlmap环境安装教程详解

    Windows下Sqlmap环境安装教程详解

    这篇文章主要介绍了Windows下Sqlmap环境安装,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • python项目中requirements.txt的用法实例教程

    python项目中requirements.txt的用法实例教程

    Python项目中必须包含一个requirements.txt文件,用于记录所有依赖包及其精确的版本号,以便新环境部署,下面这篇文章主要给大家介绍了关于python项目中requirements.txt用法的相关资料,需要的朋友可以参考下
    2022-06-06
  • 使用Python爬取小姐姐图片(beautifulsoup法)

    使用Python爬取小姐姐图片(beautifulsoup法)

    这篇文章主要介绍了Python爬取小姐姐图片(beautifulsoup法),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 利用python实现短信和电话提醒功能的例子

    利用python实现短信和电话提醒功能的例子

    今天小编就为大家分享一篇利用python实现短信和电话提醒功能的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 细数nn.BCELoss与nn.CrossEntropyLoss的区别

    细数nn.BCELoss与nn.CrossEntropyLoss的区别

    今天小编就为大家整理了一篇细数nn.BCELoss与nn.CrossEntropyLoss的区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python实现的爬取百度文库功能示例

    Python实现的爬取百度文库功能示例

    这篇文章主要介绍了Python实现的爬取百度文库功能,结合实例形式分析了Python针对百度文库的爬取、编码转换、文件保存等相关操作技巧,需要的朋友可以参考下
    2019-02-02
  • 解决python使用open打开文件中文乱码的问题

    解决python使用open打开文件中文乱码的问题

    下面小编就为大家分享一篇解决python使用open打开文件中文乱码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • 使用wxpy实现自动发送微信消息功能

    使用wxpy实现自动发送微信消息功能

    这篇文章主要介绍了使用wxpy实现自动发送微信消息功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • python实现可逆简单的加密算法

    python实现可逆简单的加密算法

    这篇文章主要为大家详细介绍了python实现可逆简单的加密算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • 浅谈python字符串方法的简单使用

    浅谈python字符串方法的简单使用

    下面小编就为大家带来一篇浅谈python字符串方法的简单使用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07

最新评论

?


http://www.vxiaotou.com