033 排序,又见排序!


#include <iostream>
using namespace std;

bool Greater2(int n1, int n2)
{
    return n1 > n2;
}
bool Greater1(int n1, int n2)
{
    return n1 < n2;
}
bool Greater3(double d1, double d2)
{
    return d1 < d2;
}
template<class T>
void Swap(T & a,T & b) {
    T temp = a;
    a = b;
    b = temp;
}

template <class T1, class T2>
void mysort(T1 ar,T1 arEnd, T2 fun) {

    for (;ar != arEnd-1 ; ++ar) {
        for (T1 j = ar + 1;j != arEnd;++j) {
            if (fun(*j,*ar)) {
                //方法一
                /*auto temp = *ar;
                *ar = *j;
                *j = temp;*/

                //方法二
                Swap(*j, *ar);
            }
        }
    }
}


#define NUM 5
    int main()
{
    int an[NUM] = { 8,123,11,10,4 };
    mysort(an, an + NUM, Greater1); //从小到大排序 
    for (int i = 0;i < NUM; i++)
        cout << an[i] << ",";
    mysort(an, an + NUM, Greater2); //从大到小排序 
    cout << endl;
    for (int i = 0;i < NUM; i++)
        cout << an[i] << ",";
    cout << endl;
    double d[6] = { 1.4,1.8,3.2,1.2,3.1,2.1 };
    mysort(d + 1, d + 5, Greater3); //将数组从下标1到下标4从小到大排序 
    for (int i = 0;i < 6; i++)
        cout << d[i] << ",";
    return 0;
}

posted @ 2022-02-24 17:54  icefield817  阅读(83)  评论(0编辑  收藏  举报