EDA365电子论坛网

标题: 【skill代码分享】快速排序算法 [打印本页]

作者: ashnoer    时间: 2024-11-13 18:42
标题: 【skill代码分享】快速排序算法
原来对算法没有研究,一直使用自己写的选排,后面感觉效率方面比较低就去了解了一下其他比较高效的算法,
然后觉得快速排序比较好,就自己弄了个

  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. )
复制代码



作者: Dc202408015a    时间: 2024-11-14 08:56
学习mark 强
作者: L669969    时间: 2024-11-15 08:54
这个可以有
作者: Harley123    时间: 2024-11-15 16:48
谢谢分享!




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2