小编Mih*_*aiM的帖子

为什么给qsort()的比较函数需要返回三个不同的值?

我已经读过需要比较函数需要qsort()有3个结果:

  • 否定结果如果 val1 < val2
  • 0 如果 val1 == val2
  • 如果是积极的结果 val1 > val2

据我所知,排序数组只需要一个返回true或false的谓词.以冒泡为例:

int compare(int a, int b)
{
    if(a>b) return 1;
    return 0;
}
void bubbleSort(int arr[], int n) 
{
    int i, j;
    for (i = 0; i < n-1; i++)  
        for (j = 0; j < n-i-1; j++)  
            if ( compare(arr[j],arr[j+1]) ) 
                swap(&arr[j], &arr[j+1]);
}
Run Code Online (Sandbox Code Playgroud)

那么为什么qsort()比较函数需要有3种可能的结果而不是2呢?

c sorting algorithm

7
推荐指数
2
解决办法
221
查看次数

标签 统计

algorithm ×1

c ×1

sorting ×1