c++ - 带有结构的自定义排序功能

标签 c++ c sorting struct

所以,我对这个排序函数有问题,我写它来排序结构。

我最初的想法是有一个 while循环直到没有变化发生,里面有for通过 array[10] 的循环,比较两个相邻的元素。如果下一个元素大于前一个元素,则交换它们,并将迭代器抛回零。

除了第一个元素不是最高的以外,一切都正常。从第二到最后,一切都很好。

有什么地方我犯了错误吗?代码对我来说似乎很好...... 我知道我可以使用 <algorithm> ,但我应该为此编写自己的函数。

void izvadaPecRez(Pari masivs[])
{
    Pari temp;
    bool change;
    int i;
    while(change!=false)
    {
        for(i=0;i<10;i++)
        {
            if(masivs[i+1].kopejais>masivs[i].kopejais)
            {
                temp=masivs[i];
                masivs[i]=masivs[i+1];
                masivs[i+1]=temp;
                change=true;
                i=0;
            }
            else
            {
                change=false;
            }
        }
    }

    for(i=0;i<10;i++)
        printone(masivs, i);
}

最佳答案

i=0 将在 for 循环中的增量运行之前发生,因此该语句的效果将是 i==1 在下一个环形。获得预期行为的最简单方法是在交换元素后从 for 循环中 break (别担心,它只会中断 for 循环,而不是 while 循环).您还应该在 while 循环的顶部设置 change=false,而不是在您交换元素时设置它。

关于c++ - 带有结构的自定义排序功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23810881/

相关文章:

c - 取消引用 ptread_create 使用的结构中的数组

c - 访问代码中的全局静态表不匹配

c++ - 为什么 In-place QuickSort 比 C++ 中的普通版本慢?

c++ - 调用 VS12 std::transform?

c - 在 labwindows cvi 应用程序中调用 FindNextFile 时清空 cFileName

C++ 枚举可以与整数进行比较但不能从整数分配?

java - 我有一个对象数组,每个对象都分配了一个日期,如何按日期顺序对这些对象进行排序?

python - 仅对 pandas DataFrame 的一部分进行重新排序

c++ - 如何从 C++ 扩展的 QQuickItem 创建 QQuickWindow 作为 child ?

c++ - 创建临时 char* 并打印到它的正确方法是什么?