|
分享源码
界面截图: |
|
是否带模块: |
调用了模块 |
备注说明: |
- |
写完了 迭代版快速排序,用1个参数一样大小的游标数组(记录左右的起始点终点),储存了原来的栈
13|56 78|10,11
例如第一组,被4分割成两个,左右是1 3, 第二个是 5 ,6
然后用第一组数组,计算得出第二组游标数组。下回第二游标组数组计算的结果再覆盖到第一个游标数组。交替使用,比第二个数组直接赋值到第一个数组会快一倍了。
基本和递归的快排速度上没差别了。就是空间占用大点(栈换成了两组的数组)
结果快排的这个迭代版,还是没有归并排序的迭代版快
.版本 2
' * “5 秒 398 毫秒 ” 500w
' * 真 | “成功=真” | “归并最优化版本”
' * “8 秒 3 毫秒 ”
' * 真 | “成功=真” | “迭代_快排”
' * “11 秒 92 毫秒 ”1000w
' * 真 | “成功=真” | “归并最优化版本”
' * “25 秒 647 毫秒 ”
' * 真 | “成功=真” | “迭代_快排********************* 本文的速度在这里”
' * “26 秒 723 毫秒 ”
' * 真 | “成功=真” | “快排原始”
' * “27 秒 425 毫秒 ”
' * 真 | “成功=真” | “QuickSort”
变量名 | 类 型 | 静态 | 数组 | 备 注 | 局变_旧储存左右值 | 整数型 | | 0 | 局变_新存储左右值 | 整数型 | | 0 | 局变_新旧二选一 | 逻辑型 | | | 局变_游标数目 | 整数型 | | | 局变_左边 | 整数型 | | | 局变_右边 | 整数型 | | | n1 | 整数型 | | | i | 整数型 | | | s1 | 整数型 | | | 如果真 (取数组成员数 (参数_数组 ) ≤ 1 )返回 ()重定义数组 (局变_旧储存左右值, 假, 取数组成员数 (参数_数组 )) 重定义数组 (局变_新存储左右值, 假, 取数组成员数 (参数_数组 )) 局变_旧储存左右值 [1 ] = 1 局变_旧储存左右值 [2 ] = 取数组成员数 (参数_数组 )局变_游标数目 = 1 循环判断首 ()s1 = 0 如果 (局变_新旧二选一 = 假)计次循环首 (局变_游标数目, n1 )局变_左边 = 局变_旧储存左右值 [n1 × 2 - 1 ]局变_右边 = 局变_旧储存左右值 [n1 × 2 ]i = 子程序_分开成两份 (参数_数组, 局变_左边, 局变_右边 )如果 (局变_左边 ≥ i - 1 ) s1 = s1 + 1 局变_新存储左右值 [s1 ] = 局变_左边 s1 = s1 + 1 局变_新存储左右值 [s1 ] = i - 1 如果 (i + 1 ≥ 局变_右边 ) s1 = s1 + 1 局变_新存储左右值 [s1 ] = i + 1 s1 = s1 + 1 局变_新存储左右值 [s1 ] = 局变_右边 计次循环尾 ()局变_新旧二选一 = 真 计次循环首 (局变_游标数目, n1 )局变_左边 = 局变_新存储左右值 [n1 × 2 - 1 ]局变_右边 = 局变_新存储左右值 [n1 × 2 ]i = 子程序_分开成两份 (参数_数组, 局变_左边, 局变_右边 )如果 (局变_左边 ≥ i - 1 ) s1 = s1 + 1 局变_旧储存左右值 [s1 ] = 局变_左边 s1 = s1 + 1 局变_旧储存左右值 [s1 ] = i - 1 如果 (i + 1 ≥ 局变_右边 ) s1 = s1 + 1 局变_旧储存左右值 [s1 ] = i + 1 s1 = s1 + 1 局变_旧储存左右值 [s1 ] = 局变_右边 计次循环尾 ()局变_新旧二选一 = 假 局变_游标数目 = s1 ÷ 2 如果真 (局变_游标数目 = 0 )跳出循环 ()循环判断尾 (真) |
子程序_分开成两份 | 整数型 | | |
参数_数组 | 整数型 | | | | 参数左 | 整数型 | | | | 参数右 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | i | 整数型 | | | j | 整数型 | | | 局部_基准值 | 整数型 | | |
i = 参数左 j = 参数右 局部_基准值 = 参数_数组 [参数左 ]判断循环首 (i < j )判断循环首 (i < j 且 参数_数组 [j ] ≥ 局部_基准值 )j = j - 1 判断循环尾 ()如果真 (i < j )参数_数组 [i ] = 参数_数组 [j ]i = i + 1 判断循环首 (i < j 且 参数_数组 [i ] ≤ 局部_基准值 )i = i + 1 判断循环尾 ()如果真 (i < j )参数_数组 [j ] = 参数_数组 [i ]j = j - 1 判断循环尾 ()参数_数组 [i ] = 局部_基准值 返回 (i )
|
评分
-
查看全部评分
|