#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;
}