【问题标题】:How can I sort a vector in a descending order in C?如何在C中按降序对向量进行排序?
【发布时间】:2022-01-02 05:25:31
【问题描述】:

我必须按降序对向量进行排序,它不起作用,这是我尝试使用的算法。

do{
    ok=1;
    for(int i=0;i<n;i++)
        if(v[i]<v[i+1])    //is the problem here?
    {
            x=v[i];v[i]=v[i+1];v[i+1]=x;
            ok=0;
    }
}while(ok!=0);

【问题讨论】:

  • n的号码是多少?

标签: arrays c sorting swap bubble-sort


【解决方案1】:

if 语句中的表达式

if(v[i]<v[i+1])

i等于n - 1时可以访问数组外的内存。

你可以重写for循环,例如下面的方式

for(int i=1;i<n;i++)
    if(v[i-1]<v[i])    //is the problem here?
{
        x=v[i-1];v[i-1]=v[i];v[i]=x;
        ok=0;
}

使用您的方法更有效地实现冒泡排序算法可以采用以下方式

    int m = n;
    do {
        int last = 0;
        for (int i = 1; i < m; i++)
            if (v[i-1] < v[i])
            {
                int x = v[i-1]; v[i-1] = v[i]; v[i] = x;
                last = i;
            }
        m = last;
    } while ( !( m < 2 ) );

【讨论】:

    猜你喜欢
    • 2012-02-19
    • 2018-10-08
    • 2022-11-28
    • 1970-01-01
    • 2019-11-04
    • 2022-07-20
    • 2023-02-26
    • 2021-07-26
    • 1970-01-01
    相关资源
    最近更新 更多