_GT - C++算法分析器


GPL
跨平台
C/C++

软件简介

算法分析工具可以用于观察数组的变化,变量的计算过程,能够辅助分析排序算法,STL算法,数值算法等。最后给出了使用手册,并不完整,
具体的细节可以参照源文件中的 “gt.h”, “GuardConfig.h”, “manual.hpp”

关于数值计算

[cpp] view
plain
copy

#include "gt.h"  
  
int main(void)  
{  
    AddId("id_Pi")("id_r");     // 为后面的变量命名用于跟踪输出到控制台,函数后面可以添加任意个参数  
    Double Pi = 3.1415926, r;  
    r = 4.1;  
      
    AddId("id_perimeter")("id_area");   // 为后面的变量命名用于跟踪输出到控制台  
    Double perimeter, area;  
    perimeter = 2 * Pi * r;  
    area = Pi * pow(r, 2);  
    return 0;  
}

控制台自动输出

[cpp] view
plain
copy

EXPRES:id_Pi = 3.141593  
EXPRES:id_r = 4.1  
EXPRES:id_perimeter = (2*3.141593)*4.1  
EXPRES:id_area = 3.141593*pow(4.1, 2)

希尔排序代码

[cpp] view
plain
copy

#include "gt.h"  
  
const unsigned int N = 4;                       // 下面数组的长度  
const unsigned int SellNum[N] = {7, 3, 1};  // 最后一个数值必须是 1  
  
void ShellSort(IntPtr arr, int length) {  
    for(int n=0; n<N; n++) {  
        int increase=SellNum[n];  
        for(int i=0; i<increase; i++) {  
            for(int j=i+increase; j<length; j+=increase) {  
                for(int k=j; arr[k-increase]>arr[k]; k-=increase) {  
                    int temp = arr[k];  
                    arr[k] = arr[k-increase];  
                    arr[k-increase] = temp;  
                    if(k-2*increase < 0)break;  
                }  
            }  
        }  
    }  
}  
  
int main(void)  
{  
    int a[] = {3, 1, 3, 63, 11,2, 5,23, 51};  
    IntArr arr(a);  
    ShellSort(arr, 9);  
    for(int i=0; i<9; i++) {  
        printf("%d  ", arr[i]);  
    }  
    return 0;  
}

希尔排序对应控制台的输出

[cpp] view
plain
copy

EXPRES:GT[6] = GT[3]  
  1   3   63   11   2  [63]  23   51   
  
EXPRES:GT[3] = 5  
  1   3  [5]  11   2   63   23   51   
  
EXPRES:GT[5] = GT[2]  
  1   3   5   11  [3]  63   23   51   
  
EXPRES:GT[2] = 2  
  1  [2]  5   11   3   63   23   51   
  
EXPRES:GT[1] = GT[0]  
 [3]  2   5   11   3   63   23   51   
  
EXPRES:GT[0] = 1  
  3   2   5   11   3   63   23   51   
  
EXPRES:GT[2] = GT[0]  
  3  [3]  5   11   3   63   23   51   
  
EXPRES:GT[1] = 2  
 [2]  3   5   11   3   63   23   51   
  
EXPRES:GT[5] = GT[4]  
  2   3   5   11  [11]  63   23   51   
  
EXPRES:GT[4] = 3  
  2   3   5  [3]  11   63   23   51   
  
EXPRES:GT[4] = 5  
  2   3   5  [5]  11   63   23   51   
  
EXPRES:GT[3] = 3  
  2   3  [3]  5   11   63   23   51   
  
EXPRES:GT[7] = GT[3]  
  2   3   3   5   11   63  [63]  51   
  
EXPRES:GT[6] = 23  
  2   3   3   5   11  [23]  63   51   
  
EXPRES:GT[8] = GT[3]  
  2   3   3   5   11   23   63  [63]  
  
EXPRES:GT[7] = 51  
  2   3   3   5   11   23  [51]  63