QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1543|回复: 0
打印 上一主题 下一主题

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

[复制链接]
字体大小: 正常 放大
杨利霞        

5273

主题

82

听众

17万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2020-4-12 11:41 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    Python实现快速排序和插入排序算法及自定义排序的示例! V$ w- p3 M0 x$ b7 w3 d
    这篇文章主要介绍了Python实现快速排序和插入排序算法及自定义排序的示例,自定义排序用到了Python的sort和sorted函数,需要的朋友可以参考下" k' I) I% ]4 l) B/ [0 F# H
    一、快速排序$ Y, f5 W5 @- k0 g
    7 z4 h. l2 ], J2 a! f0 H0 [
    快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。4 D, R. b9 j% ~
    ) @& J6 u/ B2 V" f) V3 I1 i2 P
    快速排序,递归实现
    / k+ o. C8 }  `8 k' V3 L: B4 m' Y3 G; y% i1 W! f7 \$ s
        def quick_sort(num_list):- I/ ]  n- _& A7 o4 j* ]
      """( m/ v- Z. y- S. R* k
      快速排序2 ], k# r2 C$ ~4 E7 W1 E
      """
    / K4 x1 a0 W+ N/ c  if num_list == []:
    3 c7 K( w& o, \, k% w    return num_list
    ' `. X0 z5 {5 K* U! `0 O  smallList = []
    $ h" i0 R: l% I# h' m+ C  bigList = []: a- S* D8 W) C, o" t* U
      middleElement = num_list[0]
    5 x- {- G# O  n; |6 L  t0 T8 b  for i in num_list[1:]:4 ^& V# V) \% y$ q  D, d  W: r/ r
        if i <= middleElement:
    ; b, r& A4 r$ `- K! M      smallList.append(i)& F9 B# ~; q& n( n) r2 O5 o
        else:
    ' }$ P7 a- T* ?# d8 e0 j! F      bigList.append(i)' F* V0 k/ K) x- Q8 s
      return quick_sort(smallList)+[middleElement]+quick_sort(bigList)3 r2 E; ~. q0 ~4 c1 o7 G
    ( o/ D5 }# D8 b( ~

    * b- A. C6 {  f" q6 ~( I! [, h插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
    2 T- N! M" s- |% f: D5 L8 s% J8 Q* O7 ^" s
    插入排序
    $ g. J; O; V8 O; |" y* @0 \7 x
    + F5 y; v2 ]" h0 |8 t0 [
    6 m) L! F" x& Ydef insert_sort(num_list):8 ?+ q' k% u. `6 j+ V/ B
      """
    7 [9 _$ w: q9 i  插入排序! F* O7 ~4 S: Y7 [2 |
      """
    : w& X( S* u* v4 v# R4 j; V/ p: d  for i in range(len(num_list)-1):9 t8 a% Q1 h0 _. z
        for j in range(i+1, len(num_list)):6 X0 p5 `7 D, i* \5 ^
          if num_list>num_list[j]:; |0 G' @. v2 p
            num_list,num_list[j] = num_list[j],num_list+ `7 t% B' p5 ?3 |8 X! W
      return num_list% I0 O3 `( `6 ~# q- P& Q
    5 A: Q1 g, V5 i4 ?, o
    3 o9 l' v4 Y  ^& t/ h
    三、自定义排序
    ; w% W3 _' A% E/ ?利用 sort() 或 sorted() 的 key 即可实现。
    9 u  j3 s) H- Z% u, s' Hdef sort_key(obj):
      t1 j) w- E6 w  C  sorted_list = [4, 2, 5, 9, 7, 8, 1, 3, 6, 0]2 X6 C- Y  j/ [  R5 `* |
      return sorted_list.index(obj)
    1 ?# h" K9 _& L$ ]/ {- G3 [, a. m6 K% X

    8 d, ?( {$ k6 M+ Oif __name__ == '__main__':6 k- S5 ^8 A4 l) n: K
      print sorted(range(10), key=sort_key)
    5 f, Q. k- w9 [+ a2 `) o, \2 e- E5 c5 H/ ]
    # 输出结果如下
    # I) P* W) t. y# Q+ G: F& ]0 J. {: _[4, 2, 5, 9, 7, 8, 1, 3, 6, 0]
    ; l6 Y  A0 f  C5 o; R' e
    - l) x4 A0 F. g& P+ @1 v
    , P8 @! u+ f' z非常感谢你的阅读; X, q( s, ]( I; i5 D5 b
    大学的时候选择了自学python,工作了发现吃了计算机基础不好的亏,学历不行这是6 h. q8 N3 Q( Z- j! u' |
    没办法的事,只能后天弥补,于是在编码之外开启了自己的逆袭之路,不断的学习python核心知识,深入的研习计算机基础知识,整理好了,如果你也不甘平庸,那就与我一起在编码之外,不断成长吧!
    & ?$ B5 I1 T' u/ Y, W其实这里不仅有技术,更有那些技术之外的东西,比如,如何做一个精致的程序员,而不是“屌丝”,程序员本身就是高贵的一种存在啊,难道不是吗?[点击加入]想做你自己想成为高尚人,加油!1 F# _+ a0 h! c* w8 u6 O
    ————————————————+ e. l; m2 c% p1 l5 w& p) u0 [
    版权声明:本文为CSDN博主「程序员牡蛎」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。& g" Z( `# M! F
    原文链接:https://blog.csdn.net/chengxun03/article/details/105460563$ @% M0 p0 [; ~

    2 v5 o! a0 a2 s1 i; F8 y, F: m; x/ C! _- H6 D% j9 G
    1 w! z0 c9 ~9 a: s% d( G
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-4-21 12:17 , Processed in 0.404896 second(s), 51 queries .

    回顶部