易语言快速排序

快速排序又是一种分而治之思想在排序算法上的典型应用。本质上来看,快速排序应该算是在冒泡排序基础上的递归分治法。相对于其他排序,快速排序算是比较快的一种。

基本思想是:

1.先从数列中取出一个数作为基准数(pivot)。

2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

3.再对左右区间重复第二步,直到各区间只有一个数。

这个基准数,可以随机选出一个数,为了优化,在易语言里我们取数列的中间,其实是采用了递归折半的方法来实现快速排序的。

511遇见

快速排序

.版本 2

.子程序 快速排序
.参数 arr, 整数型, 数组
.参数 l, 整数型
.参数 r, 整数型
.局部变量 key, 整数型
.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 临时, 整数型

i = l
j = r
key = arr [(i + j) \ 2]
.判断循环首 (i < j)
.判断循环首 (i < r 且 arr [i] < key)
i = i + 1
.判断循环尾 ()
.判断循环首 (j > l 且 arr [j] > key)
j = j - 1
.判断循环尾 ()
.如果真 (i ≤ j)
.如果 (i ≠ j)
临时 = arr [i]
arr [i] = arr [j]
arr [j] = 临时
.否则

.如果结束
i = i + 1
j = j - 1
.如果真结束

.判断循环尾 ()
.如果真 (i < r)
快速排序 (arr, i, r)
.如果真结束
.如果真 (j > l)
快速排序 (arr, l, j)

ASM

.版本 2
 
.子程序 asm快速排序
.参数 开始位置, 整数型
.参数 结束位置, 整数型
 
置入代码 ({ 139, 117, 8, 139, 125, 12, 139, 199, 43, 198, 51, 210, 185, 8, 0, 0, 0, 247, 241, 102, 185, 4, 0, 102, 247, 225, 139, 12, 6, 57, 14, 115, 10, 59, 117, 12, 116, 5, 131, 198, 4, 235, 242, 57, 15, 118, 10, 59, 125, 8, 116, 5, 131, 239, 4, 235, 242, 59, 247, 119, 14, 139, 6, 139, 23, 137, 22, 137, 7, 131, 198, 4, 131, 239, 4, 59, 247, 118, 206, 57, 125, 8, 115, 11, 86, 87, 255, 117, 8, 232, 159, 255, 255, 255, 94, 57, 117, 12, 118, 9, 255, 117, 12, 86, 232, 144, 255, 255, 255, 93, 194, 8, 0 })

asm快速排序

  1. .版本 2
  2. .支持库 spec
  3.  
  4. .子程序 快速排序_asm, , 公开
  5. .参数 a, 整数型, 数组
  6.  
  7. asm快速排序 (取变量数据地址 (a), 取变量数据地址 (a) + 取数组成员数 (a) × 44)

发布日期:

所属分类: 易语言 标签: