EDA365电子论坛网
标题:
【skill代码分享】快速排序算法
[打印本页]
作者:
ashnoer
时间:
2024-11-13 18:42
标题:
【skill代码分享】快速排序算法
原来对算法没有研究,一直使用自己写的选排,后面感觉效率方面比较低就去了解了一下其他比较高效的算法,
然后觉得快速排序比较好,就自己弄了个
axlCmdRegister( "00" 'Main)
;主函数
(procedure Main()
let((Array)
Array = listToVector(list(10, 2 ,7, 4, 8, 9, 1, 5 ,3 ,6))
;打印排序前的数组
printf("%L" vectorToList(Array))
printf("\n")
;调用快排主函数
QuickSort(Array 0 length(Array)-1);
;打印排序后的数组
printf("%L" vectorToList(Array))
)
)
;快速排序主函数
(procedure QuickSort(Arr Low High)
let((Pi)
when(Low<High
Pi = Partition(Arr Low High)
;归地对基准左右两侧进行排序
QuickSort(Arr Low Pi-1);
QuickSort(Arr Pi+1 High);
)
)
)
;分区函数,将数组分为比基准小和比基准大的两部分
(procedure Partition(Arr Low High)
prog((Pivot)
;将区间末位元素作为基准
Pivot = Arr[High]
;指向比基准小的元素区间的末尾
Present = Low-1
for(item Low High
;===============条件判断
(when Arr[item]<Pivot
Present++
Swap(Arr item Present)
)
)
Swap(Arr Present+1 High)
return(Present+1)
)
)
(procedure Swap(Array X Y)
Value = Array[X]
Array[X] = Array[Y]
Array[Y] = Value
)
复制代码
作者:
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