使用qsort函数实现冒泡排序

    xiaoxiao2023-11-16  163

    #include <stdio.h> #include <stdlib.h> //比较函数 int cmp(const void* p1, const void* p2){ return (*(int*)p1) - (*(int*)p2); } //交换函数 void Swap(void* p1, void* p2, int size){ //size在这里是表示字节数 int i; char tmp; //这里的交换是将p1与p2的字节内容进行就交换 for (i = 0; i < size; ++i){ tmp = *((char*)p1 + i); *((char*)p1 + i) = *((char*)p2 + i); *((char*)p2 + i) = tmp; } } void BabbleSort(void* data, int n, int size, int (*cmp)(void*, void*)){ int i = 0; int j = 0; for (i = 0; i < n - 1; ++i){ for (j = 0; j < n - 1 -i; ++j){ if (cmp((char*)data + j * size, (char*)data + (j + 1) * size) > 0){ Swap((char*)data + j * size, (char*)data + (j + 1) * size, size); } } } } int main(){ int a[] = { 2, 4, 3, 1, 7, 8, 9, 10, 5, 11, 0 }; int n = sizeof(a) / sizeof(a[0]); int i; BabbleSort(a, n, sizeof(int), cmp); for (i = 0; i < n; ++i){ printf("%d ",a[i]); } system("pause"); return 0; }
    最新回复(0)