首页 > 其他 > 详细

c函数模板实现

时间:2019-11-07 20:34:45      阅读:83      评论:0      收藏:0      [点我收藏+]

实现冒泡排序模板


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

#define LEN 20

void b_sort(void *bs, size_t num, size_t size,
        int (*compar)(const void *, const void *))
{
    int sorted = 0;
    char *base = (char*)bs;    // void * 算术运算g++会发出警告,为了消除警告,强制转换成char*
    void *ptmp = malloc(size);
    for( ; !sorted; num--) {
        sorted = 1;     // 每一趟都假设排序好了
        for(size_t i=1; i<num; i++)
            if(compar(base + i*size, base + (i-1)*size) < 0) {
                sorted = 0;
                memcpy(ptmp, base + i*size, size);
                memcpy(base + i*size, base + (i-1)*size, size);
                memcpy(base + (i-1)*size, ptmp, size);
            }
    }
    free(ptmp);
}


int compar(const void *a, const void *b)
{
    return *(int*)a - *(int*)b;
}

// 主函数
int main()
{
    int max = 100, min = 1;
    int v[LEN];

    srand(time(NULL));

    for(int i=0; i<LEN; i++) {
        v[i] = rand() % max + min;
        printf("%d %s", v[i], i==LEN-1 ? "\n" : "");
    }

    b_sort(v, LEN, sizeof(int), compar);

    for(int i=0; i<LEN; i++)
        printf("%d %s", v[i], i==LEN-1 ? "\n" : "");

    return 0;
}

c函数模板实现

原文:https://www.cnblogs.com/wjundong/p/11815223.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!