青年之家 2022-10-04 22:46 采纳率: 55.6%
浏览 24
已结题

冒泡排序模拟qsort()函数

写一个冒泡排序模拟qsort()函数,但是结果不正确。我已检查了代码,并对比了网上的代码,没有发现问题所在。求解答!

//模仿qsort()函数实现一个冒泡排序的通用算法
void swap(char* a, char* b, int size)
{
    for (int i = 0; i < size; i++)
    {
        char tmp = *a;
        *b = *a;
        *a = tmp;
        a++;
        b++;
    }
}

void bubble_sort(void* base, int num, int size, int (*cmp)(const void* e1, const void* e2))
{
    for (int i = 0; i < num - 1; i++)
    {
        for (int j = 0; j < num - 1 - j; j++)
        {
            if (cmp((char*)base + j * size, (char*)base + (j + 1) * size) > 0)
            {
                swap((char*)base + j * size, (char*)base + (j + 1) * size, size);
            }
        }
    }
}

void print(int arr[], int num)
{
    for (int i = 0; i < num; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int cmp(const void* e1, const void* e2)
{
    return *(int*)e1 - *(int*)e2;
}

int main()
{
    int arr[] = { 21, 19, 88, 78, 18, 19, 93, 60, 79, 91, };
    int num = sizeof(arr) / sizeof(arr[0]);
    print(arr, num);
    bubble_sort(arr, num, sizeof(int), cmp);
    print(arr, num);

    return 0;
}

运行结果及报错内容

img

  • 写回答

4条回答 默认 最新

  • 日向晚,声声慢 2022-10-04 22:53
    关注

    你可以看我博客,我博客里刚好有这篇。讲的应该还是比较详细的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 10月13日
  • 已采纳回答 10月5日
  • 修改了问题 10月4日
  • 创建了问题 10月4日

悬赏问题

  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败
  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用