【问题标题】: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);
【问题讨论】:
标签:
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 ) );