C++面向对象程序设计 033:排序,又见排序! ---- (北大Mooc)


专题博客链接

北大C++ POJ课后习题博客全解记录


原题题目

在这里插入图片描述

#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 T1,class T2>
void mysort(
// 在此处补充你的代码
#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;
}

代码实现

T1* startptr,T1* endptr,T2* judge)
{
    
    
    T1 temp;
    for(T1* i=startptr;i<=endptr-2;i++)
    {
    
    
        for(T1* j=i+1;j<=endptr-1;j++)
        {
    
    
            if(!(*judge)(*i,*j))
            {
    
    
                temp = *i;
                *i = *j;
                *j = temp;
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_37500516/article/details/115008682