C++ 我如何知道计数器增量是否位于正确的位置,以跟踪比较的#C++;?

C++ 我如何知道计数器增量是否位于正确的位置,以跟踪比较的#C++;?,c++,function,sorting,vector,insertion,C++,Function,Sorting,Vector,Insertion,//问题解决了。我不知道在哪里添加计数器来报告 比较。它总是保持在一个固定的数字,永远不会改变。假设每次程序运行时,向量包含两位随机数// 编辑:新问题。我不确定计数器增量是否位于正确的位置,是否用于插入排序和选择排序。 粘贴在安全链接上的代码: int insertionSort(向量&v) { //变数 内部温度,i,j,计数器; 计数器=0; 对于(i=1;i TEMP< v[j] < /code >(与其他表达式不同),如 i < v sie()>代码>或 j>=0 < /code >,

//问题解决了。我不知道在哪里添加计数器来报告 比较。它总是保持在一个固定的数字,永远不会改变。假设每次程序运行时,向量包含两位随机数//


编辑:新问题。我不确定计数器增量是否位于正确的位置,是否用于插入排序和选择排序。 粘贴在安全链接上的代码:

int insertionSort(向量&v)
{
//变数
内部温度,i,j,计数器;
计数器=0;
对于(i=1;i=0)
{
v[j+1]=v[j];
j--;
计数器+++//跟踪比较。
}
v[j+1]=温度;
}
返回计数器;//返回计数器
}
根据(现已删除)注释,这是
main()


如果不知道您的测试用例是什么,就不可能对它们执行的比较数量进行评论。如果所有情况都具有相似的属性,则代码很可能按其应有的方式运行

编辑:以下内容是为了回应OP在评论中提出的测试用例是100个随机生成的两位数元素的向量

如您在评论中所述,如果您的测试用例包含100个随机两位数的向量,那么
计数器的值将取决于元素的“未排序”程度(最小值可能与元素的数量有关)。假设所有测试用例的大小都相同,那么
计数器
值唯一相同的方法就是在调用函数之前对向量进行类似的排序。例如,如果所有向量都按升序和相同大小预先排序,则每个测试用例将给出完全相同的返回值。类似地,如果所有向量都是按降序和相同大小预先排序的,那么每个测试用例将给出完全相同的返回值(尽管与最初按升序排序时返回的值不同)

出于这个原因,我不相信你关于测试用例是随机的评论。它们可能以某种方式预先分类(或部分分类)。例如,对于每个测试用例,您可能要调用函数两次,并且在第二次调用之后只打印出
count
的值。。。。。当向量(如果代码的行为与它应该的一样)已经预排序时

结束编辑

也就是说,代码中的变量
计数器
在执行
循环时累积
主体的次数。这与正在执行的比较的数量无关,因为在该循环的主体中没有执行比较。它与插入的数量有关,而与比较的数量无关

如果使用“比较”,则需要对表达式“代码> TEMP< v[j] < /code >(与其他表达式不同),如<代码> i < v sie()>代码>或<代码> j>=0 < /code >,也可以称为代码中的比较),然后您可以考虑做一些类似

的事情。
while (++counter && temp < v[j] && j >= 0)
while(++计数器和温度=0)
以及从循环体中移除
计数器的递增


由于
计数器
初始化为零,这将计算计算
温度
的次数(
++计数器
将始终产生非零结果)。请注意,由于
temp
可能为假,因此它不会计算
j>=0
的计算次数。

我认为错误在其他地方,这应该有效。什么类型的错误@你怎么用值填充输入向量?您是否正确地为随机数生成器设定种子?对我的问题进行了一些更改,希望您能提供意见和专业知识。我有一个问题,关于反向向量的比较。他们很少改变,如果他们真的改变了,那只是一个微小的差别。那会发生吗?但是,对于myVector和myVector2的原始向量,由于您的评论,我使它们都能工作:)反向向量也被排序,但反向,所以是的,我会说,大多数时候比较的数量是相同的,这是正常的。当存在重复元素时,可能会出现(小的)差异。我不确定计数器增量是否在正确的位置。测试用例是:一个向量有100个随机的两位数,插入排序函数将按升序排序。计数器在函数中递增,因此它可以返回它进行比较的次数。是的,好的。我在这里编辑了我的答案以回应你的要求。不知何故,我怀疑你的测试用例实际上是随机的。但解释太长,无法发表评论。
int main() {
    int numCount;
    vector<int> myVector2(myVector);
    insertionSort(myVector2);
    cout << endl << endl;
    cout << "Vector after Insertion Sort: ";
    printVector(myVector2);
    cout << endl << endl;
    numCount = insertionSort(myVector2);
    cout << "Number of comparisons: " << numCount;
int main() {
    int numCount;
    vector<int> myVector2(myVector);
    numCount = insertionSort(myVector2);
    cout << endl << endl;
    cout << "Vector after Insertion Sort: ";
    printVector(myVector2);
    cout << endl << endl;
    cout << "Number of comparisons: " << numCount;
while (++counter && temp < v[j] && j >= 0)