我读到过,qsort()
所需的比较函数需要有三种结果:
- 如果
val1 < val2
,则返回负数 - 如果
val1 == val2
,则返回0
- 如果
val1 > val2
,则返回正数
据我所知,仅需要一个返回真或假的谓词即可对数组进行排序。以冒泡排序为例:
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]);
}
那么为什么qsort()
比较函数需要有三种可能的结果而不是两种呢?