zoukankan      html  css  js  c++  java
  • 多功能冒泡排序 函数指针

    #include <iostream>
    #include <iomanip>
    #include <cstdlib>
    using namespace std;
    
    void bubbleSort(int [],const int, bool(*)(int,int));
    void swap(int * const,int * const);
    bool ascending(int ,int);
    bool descending(int,int);
    void print_arr(int [],int);
    int main()
    {
        int arr[]={3,42,1,100,689,2,24,45,36,47};
        int len=sizeof(arr)/sizeof(*arr);
        int flag=0;
        cout << "原数组为:" << endl;
        print_arr(arr,len);
        cout<<"请选择排序方法,升序(1),降序(2):";
        cin>>flag;
        if(flag==1){
           bubbleSort(arr,len,ascending);
        }
        else if(flag==2){
           bubbleSort(arr,len,descending);
        }
        else cout<<"输入有误!"<<endl;
        print_arr(arr,len);
    
        cout<<"done"<<endl;
        system("pause");
        return 0;
    }
    void bubbleSort(int arr[],const int len, bool(*sort_fun)(int,int))
    {
        for(int i=0;i<len-1;++i){
            for(int j=0;j<len-1-i;++j){
                if(sort_fun(arr[j],arr[j+1]))
                    swap(arr[j],arr[j+1]);
            }
        }
    }
    bool ascending(int a,int b){
        return a>b;
    }
    bool descending(int a,int b){
        return a<b;
    }
    void swap(int * const a,int * const b){
        int t=*a;
        *a=*b;
        *b=t;
    }
    void print_arr(int arr[],int len ){
        for(int i=0;i<len;++i){
            cout<<setw(5)<<right<<arr[i];
        }
        cout<<endl;
    }
    
  • 相关阅读:
    Kubernetes 部署微服务电商平台(16)
    Android开发如何去除标题栏title
    eclipse中logcat偶尔不显示log的问题解决办法
    Two Sum
    事件的解除与绑定
    使用 Canvas 绘图
    表单脚本
    事件
    DOM2 和 DOM3
    DOM扩展
  • 原文地址:https://www.cnblogs.com/wucg/p/2078955.html
Copyright © 2011-2022 走看看