| OLD | NEW |
| 1 #include <stdlib.h> | 1 #include <stdlib.h> |
| 2 | 2 |
| 3 void *bsearch(const void *key, const void *base, size_t nel, size_t width, int (
*cmp)(const void *, const void *)) | 3 void* bsearch(const void* key, |
| 4 { | 4 const void* base, |
| 5 » void *try; | 5 size_t nel, |
| 6 » int sign; | 6 size_t width, |
| 7 » while (nel > 0) { | 7 int (*cmp)(const void*, const void*)) { |
| 8 » » try = (char *)base + width*(nel/2); | 8 void* try |
| 9 » » sign = cmp(key, try); | 9 ; |
| 10 » » if (!sign) return try; | 10 int sign; |
| 11 » » else if (nel == 1) break; | 11 while (nel > 0) { |
| 12 » » else if (sign < 0) | 12 try |
| 13 » » » nel /= 2; | 13 = (char*)base + width * (nel / 2); |
| 14 » » else { | 14 sign = cmp(key, try); |
| 15 » » » base = try; | 15 if (!sign) |
| 16 » » » nel -= nel/2; | 16 return try |
| 17 » » } | 17 ; |
| 18 » } | 18 else if (nel == 1) |
| 19 » return NULL; | 19 break; |
| 20 else if (sign < 0) |
| 21 nel /= 2; |
| 22 else { |
| 23 base = try |
| 24 ; |
| 25 nel -= nel / 2; |
| 26 } |
| 27 } |
| 28 return NULL; |
| 20 } | 29 } |
| OLD | NEW |