이것은 오름차순 또는 내림차순으로 함수 포인터를 사용하는 간단한 버블 정렬입니다. 오름차순/내림차순 함수의 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
}