指向函数的指针如何影响排序?

时间:2012-01-17 20:29:08

标签: c

这是一个简单的冒泡排序,使用函数指针进行升序或降序。我不明白升序/降序函数的return语句如何影响交换。

也许我在升序时读错了返回声明?如果它小于a,是否意味着返回b?或者,如果该陈述为真,它是否意味着返回0或1?可以使用一些澄清。感谢。

void bubble( int work[], const int size, int (*compare)(int a, int b)){
    int pass; /* pass counter */
    int count;

    void swap(int *element1Ptr, int *element2Ptr);

    for ( pass = 1 pass < size; pass++){

    /* loop to control number of comparison per pass */
        if ((*compare)(work[count], work[count+1])){
        swap(&work[count], &work[count + 1]);
     }
  }

 }

void swap ( int *element1Ptr, int *element2Ptr){
   int hold;
   hold = *element1Ptr;
   *element1Ptr = *element2Ptr;
   *element2Ptr = hold;
 }

/* determine whether elements are out of order for an ascending order sort */
 int ascending( int a, int b){
    return b < a;
  }

int descending( int a, int b){
    return b > a
 }

2 个答案:

答案 0 :(得分:2)

return中的C语句返回给定的表达式,并将其转换为函数的返回类型(如果可能)。在这些情况下,b < aa < b是布尔表达式,返回10

换句话说,它实质上意味着以下内容,但更简洁(对于b < a):

if (b < a) {
    return 1;
}
else {
    return 0;
}

答案 1 :(得分:0)

return b < a;

表示:1时返回b < a,否则返回0,即函数返回布尔表达式b < a的值。