_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
评论
