_GTC++算法分析器
算法分析工具可以用于观察数组的变化,变量的计算过程,能够辅助分析排序算法,STL算法,数值算法等。最后给出了使用手册,并不完整, 具体的细节可以参照源文件中的 "gt.h", “GuardConfig.h”, "manual.hpp"
关于数值计算
[cpp] view plaincopy
#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 plaincopy
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 plaincopy
#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 plaincopy
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
评论