• 43. 为基本排序函数加上回调功能,练习回调函数,


    //在基本的选择排序函数的基础之上,加上回调机制,实现回调函数
    
    
    //旧方式
    #include <stdio.h>
    void selectSortByUp(int *p,int n)//从小到大排序
    {
        int i,j;
        for(i = 0;i<n-1;i++)
        {
            for(j = i+1;j<n;j++)
            {
                if(p[i] > p[j])
                {
                    p[i] = p[i]^p[j];
                    p[j] = p[i]^p[j];
                    p[i] = p[i]^p[j];
                }
            }
        }
    }
    
    void selectSortByDown(int *p,int n)//从大到小排序
    {
        int i,j;
        for(i = 0;i<n-1;i++)
        {
            for(j = i+1;j<n;j++)
            {
                if(p[i] < p[j])
                {
                    p[i] = p[i]^p[j];
                    p[j] = p[i]^p[j];
                    p[i] = p[i]^p[j];
                }
            }
        }
    }
    
    
    int main(void)
    {
        int arr[10] = {6,5,4,3,2,1,7,8,9,0};
        int i;
        selectSortByDown(arr,10);
        for(i= 0;i<10;i++)
        {
            printf("%d
    ",arr[i]);
        }
        putchar(10);
    
        selectSortByDown(arr,10);
        for(i= 0;i<10;i++)
        {
            printf("%d
    ",arr[i]);
        }
        putchar(10);
        return 0;
    }

    添加回调接口,实现回调函数。

    #include <stdio.h>
    
    int callBackCompare(int a,int b)
    {
        return a<b?1:0; //return a>b?1:0;
    }
    
    void selectSort(int *p,int n,int(*pf)(int,int))//从大到小排序
    {
        int i,j;
        for(i = 0;i<n-1;i++)
        {
            for(j = i+1;j<n;j++)
            {
                if(pf(p[i],p[j]))
                {
                    p[i] = p[i]^p[j];
                    p[j] = p[i]^p[j];
                    p[i] = p[i]^p[j];
                }
            }
        }
    }
    
    int main(void)
    {
        int arr[10] = {6,5,4,3,2,1,7,8,9,0};
        int i;
        selectSort(arr,10,callBackCompare);
        for(i= 0;i<10;i++)
        {
            printf("%d
    ",arr[i]);
        } 
        putchar(10); 
        
        return 0;
    }

    //与上面这个对比一下,下面的为普通的间接调用。

    #include <stdio.h>
    int callBackCompare(int a,int b)
    {
        return a<b?1:0;
    }
    void selectSort(int *p,int n)//从大到小排序
    {
        int i,j;
        for(i = 0;i<n-1;i++)
        {
            for(j = i+1;j<n;j++)
            {
                if(callBackCompare(p[i],p[j]))
                {
                    p[i] = p[i]^p[j];
                    p[j] = p[i]^p[j];
                    p[i] = p[i]^p[j];
                }
            }
        }
    }
    
    int main(void)
    {
        int arr[10] = {6,5,4,3,2,1,7,8,9,0};
        int i;
        selectSort(arr,10);
        
        return 0;
    }
  • 相关阅读:
    day37 事务
    小组分享
    day36 pymysql 索引
    day 35 多表查询
    day 35 作业
    day 34 作业
    AST 节点类型对照表
    babel _shallowEqual.default
    js Proxy
    Symbol
  • 原文地址:https://www.cnblogs.com/ZhuLuoJiGongYuan/p/9512179.html
Copyright © 2020-2023  润新知