これは、昇順または降順の関数ポインタを使用した単純なバブルソートです。私は昇順/降順関数の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
}