c - C 中的排序算法,使用 qsort 或替代交换方法对指向结构对象的指针数组进行排序

标签 c sorting

void sort_vector ()
    {
        int i, j;

        for ( i = 0; i < _num_vrsVector; ++i )
        {
            for ( j = i+1; j < _num_vrsVector; ++j )
            {
                if ( _vrsVector[i]->_phase > _vrsVector[j]->_phase ) {
                    swap_vector ( &_vrsVector[i], &_vrsVector[j] );
                }
            }
        }
    }
void swap_vector (struct vrsVector **p, struct vrsVector **q )
{
    struct vrsVector *temp;

    temp = *p;
    *p = *q;
    *q = temp;
}

我的问题是哪种方法更适合对 C 中指向结构对象的指针数组进行排序。 上面的代码是进行比较,然后进行交换。我知道的另一种方法是使用“QSORT”。我想知道我刚才提到的哪些方法更适合对数组进行排序指向对象的指针?

最佳答案

我会使用图书馆的一些东西,除非你有理由不这样做。一般来说,这是排序或其他任何事情都需要遵循的一个很好的规则。如果您发现它不满足您的要求,那么寻找替代方案,但您的默认立场应该是“其他人做得比我做得更好”。 (或者,如果你的自尊心无法接受这一点,“我的工作是向我的业务/用户提供 X。我从事的是“X”业务,而不是编写排序例程,无论我有多擅长”)。

TL;DR:qsort 是“最好的”

关于c - C 中的排序算法,使用 qsort 或替代交换方法对指向结构对象的指针数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17917061/

相关文章:

java - 有效地对逻辑上属于同一实体的对象列表进行排序

c - 根据复选框更改输入框中的文本 (GTK+)

c - PIT 不向 IRQ0 发送中断

c++ - 排序 QtTableModel - QTableView 没有得到更新

java - 两个 ArrayList/List 对象的排序

sorting - x86 尝试进行冒泡排序时出现段错误

c - 管道上的持久 execvp?

c - 向不透明句柄添加 const-ness

c++ - 为什么在eclipse CDT 编辑器中断点用反斜杠标记?

java - 不能缩短具有大字符串数字的字符串数组