Swap(char* b1, char* b2, size_t width) {
char cur = *b1;
*b1 = *b2;
*b2 = cur;
}//交换函数
int cmp(const void* p1, const void* p2) {//比较函数
return *(char*)p1 - *(char*)p2;
}
bubble(void* base, size_t nums, size_t width, int(*cmp)(const void* p1, const void* p2)) {
int i = 0;
int j = 0;
for (i = 0; i < nums - 1; i++) {
for (j = 0; j < nums - i - 1; j++) {
if (cmp((char*)base + j * width, (char*)base + (j + 1) * width) > 0){
Swap((char*)base + j * width, (char*)base + (j + 1) * width,width);
}
}
}
}
int main() {
int arr[] = { 1,4,5,2,3,9,7,6,8 };//无序数组
int sz = sizeof(arr) / sizeof(arr[0]);//求数组长度
bubble(arr, sz, sizeof(arr[0]), cmp);//冒泡排序函数
int i = 0;
for (i = 0; i < sz; i++) {
printf("%d ", arr[i]);
}//打印排序完之后的结果
return 0;
}