C基础--泛型函数

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

void show_arry(int a[], int n)
{
    int i;
    for (i = 0; i < n; i++)
        printf("%d\n", a[i]);
    putchar(‘\n‘);
}
void init_arry(int a[], int n)
{
    int i;
    srand(time(NULL));
    for (i = 0; i < n; i++)
        a[i] = rand() % 100;
}
int cmp_int(void *a, void *b)
{
    int x = *((int *)a);
    int y = *((int *)b);
    return x > y;
}
void swap_int(void *a, void *b)
{
    int tmp;
    tmp = *((int *)a);
    *((int *)a) = *((int *)b);
    *((int *)b) = tmp;
}
void bubble_sort(void *a, int n, int(*cmp)(void *, void *), void (*swap)(void *, void *))
{
    int i, j;
    for (i = 0; i < n; i++)
        for (j = 0; j < n-i-1; j++)
            if (cmp((void *)((int *)a+j), (void *)((int *)a+j+1)) > 0)
                swap((void *)((int *)a+j), (void*)((int*)a+j+1));
}
/*
int main(void)
{
    int a[10];
    init_arry(a, 10);
    show_arry(a, 10);
    bubble_sort(a, 10, cmp_int, swap_int);
    show_arry(a, 10);
}
*/
int cmp_float(void *a, void * b)
{
    return *((float *)a) > *((float *)b);
}
void swap_float(void *a, void *b)
{
    float tmp;
    tmp = *((float *)a);
    *((float *)a) = *((float *)b);
    *((float *)b) = tmp;

}
void show_float(float a[], int n)
{
    int i;
    for (i = 0; i < n; i++)
        printf("%f\n", a[i]);
    putchar(‘\n‘);
}
int main(void)
{
    float a[5] = {1.3, 4.5, 2.3, 1.2, 3.7};
    bubble_sort(a, 5, cmp_float, swap_float);
    show_float(a, 5);
}
时间: 2024-11-19 16:02:09

C基础--泛型函数的相关文章

python基础——sorted()函数

python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来. Python内置的sorted()函数就可以对list进行排序: >>> sorted([36, 5, -12, 9, -21]) [-21, -12, 5, 9, 36] 此外,sorted()函数也是一个

C++泛型函数及模版类

什么是泛型编程? 简单来说,泛型编程,意思就是针对广泛类型的编程方式.具体类型可以有不同的实现方式,但是针对广泛类型编程,就能在需要调用时才指定参数类型或者调用类型. 泛型编程是一种基于发现高效算法的最抽象表示的编程方法.也就是说,以算法为起点并寻找能使其工作并且有效率的工作的最一般的必要条件集. 可以想象的是,很多算法都需要相同的必要条件集,并且这些必要条件集有不同的实现方式.STL标准模版库就是泛型编程的例子. 泛型函数怎么写? #include<iostream> using names

Scala 深入浅出实战经典 第42讲:scala 泛型类,泛型函数,泛型在spark中的广泛应用

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2 技术爱好者尤其是大数据爱好者 可以加DT大数据梦工厂的qq群 DT大数据梦工厂① :462923555 DT大数据梦工厂②:437123764 DT大数据梦工厂③

JAVA基础—泛型小结

概念: 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法. Java语言引入泛型的好处是安全简单. 泛型的常用字符代表意思: ? 表示不确定的java类型. T  表示java类型. K V 分别代表java键值中的Key Value. E 代表Element. 下面转载于cnblog上一个写的很好的例子 真的很好,我写了半天,当看到他这个后,立即删除~ 普通泛型

Swift泛型和泛型函数

泛型(generic)可以使我们在程序代码中定义一些可变的部分,在运行的时候指定.使用泛型可以最大限度地重用代码.保护类型的安全以及提高性能.在Swift集合类中,已经采用了泛型.一.一个问题的思考怎样定义一个函数来判断两个参数是否相等呢?如果参数是Int类型,则函数定义如下:func isEqualsInt(a:Int, b:Int) -> Bool {    return (a == b)}这个函数参数列表是两个Int类型,它只能比较两个Int类型参数是否相等.如果我们想比较两个Double

Python基础07 函数

Python基础07 函数 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 函数最重要的目的是方便我们重复使用相同的一段程序. 将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复敲所有的语句. 函数的定义 首先,我们要定义一个函数, 以说明这个函数的功能. def square_sum(a,b): c = a**2 + b**2 return c 这个函数的功能是求两个数的平方和. 首先

Golang泛型函数

目前,golang还不支持模板函数(类型参数化),所以看上去不得不为每一种类型都实现一个函数.但是Golang可以利用空接口interface{}和闭包/高阶函数来实现泛型函数. 1 空接口 空接口interface{}是指方法集为空的接口,任何类型的值都可以赋值给空接口.接口相关内容请参见另一篇博客<Golang中的接口> // interface{} func minimum(first interface{}, rest ...interface{}) interface{} {    

Oracle实践--PL/SQL基础之函数

PL/SQL基础之函数 /* 函数:可以有返回值得命名的PL/SQL子程序,必须有返回值 关键字:function return */ --函数1 create or replace function helloworld return varchar2--指定返回类型,不能给定长度 as v_hello varchar2(50); begin v_hello :='helloworld!'; return v_hello;--不可少的return end; --函数调用方式: select h

SQL Server 基础 04 函数与分组查询数据

函数与分组查询数据 系统函数分 聚合函数.数据类型转换函数.日期函数.数学函数 . . . 1. 聚合函数 主要是对一组值进行计算,然后返回一个值. 聚合函数包括 sum(求和).avg(求平均值).min().max().count(求数量) sum函数语法  :  sum(列明) select sum(sno) as 序号和 from stu_info avg select avg(sno) as 序号平均值 from stu_info . . . count 用来一组值的个数,统计 sel