找回密码
 注册
查看: 271|回复: 3
打印 上一主题 下一主题

【skill代码分享】快速排序算法

  [复制链接]
  • TA的每日心情
    郁闷
    2024-7-25 15:18
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    跳转到指定楼层
    1#
     楼主| 发表于 2024-11-13 18:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    原来对算法没有研究,一直使用自己写的选排,后面感觉效率方面比较低就去了解了一下其他比较高效的算法,
    然后觉得快速排序比较好,就自己弄了个

    1. axlCmdRegister( "00" 'Main)

    2. ;主函数
    3. (procedure Main()
    4.   let((Array)
    5.     Array = listToVector(list(10, 2 ,7, 4, 8, 9, 1, 5 ,3 ,6))
    6.     ;打印排序前的数组
    7.     printf("%L" vectorToList(Array))
    8.     printf("\n")

    9.     ;调用快排主函数
    10.     QuickSort(Array 0 length(Array)-1);

    11.     ;打印排序后的数组
    12.     printf("%L" vectorToList(Array))
    13.   )
    14. )

    15. ;快速排序主函数
    16. (procedure QuickSort(Arr Low High)
    17.   let((Pi)
    18.     when(Low<High
    19.       Pi = Partition(Arr Low High)

    20.       ;归地对基准左右两侧进行排序
    21.       QuickSort(Arr Low Pi-1);
    22.       QuickSort(Arr Pi+1 High);
    23.     )
    24.   )
    25. )

    26. ;分区函数,将数组分为比基准小和比基准大的两部分
    27. (procedure Partition(Arr Low High)
    28.   prog((Pivot)
    29.     ;将区间末位元素作为基准
    30.     Pivot = Arr[High]
    31.     ;指向比基准小的元素区间的末尾
    32.     Present = Low-1

    33.     for(item Low High
    34.       ;===============条件判断
    35.       (when Arr[item]<Pivot
    36.         Present++
    37.         Swap(Arr item Present)
    38.       )
    39.     )
    40.     Swap(Arr Present+1 High)
    41.     return(Present+1)
    42.   )
    43. )

    44. (procedure Swap(Array X Y)
    45.   Value = Array[X]
    46.   Array[X] = Array[Y]
    47.   Array[Y] = Value
    48. )
    复制代码


    该用户从未签到

    2#
    发表于 2024-11-14 08:56 | 只看该作者
    学习mark 强

    该用户从未签到

    3#
    发表于 2024-11-15 08:54 | 只看该作者
    这个可以有
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-2-5 12:06 , Processed in 0.078125 second(s), 22 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表