|

分享源码
界面截图: |
|
是否带模块: |
调用了模块 |
备注说明: |
- |
写完了 迭代版快速排序,用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 )
|
评分
-
查看全部评分
|