/*********************************************************************
*  源程序名：ModelTask6_2_2.cpp                 　　　　　　         *
*  功能：用自定义函数将n个整数从大到小排序。                         *
*********************************************************************/
#include <iostream.h>
#define MAX 100 //要处理整数的最大数目
void sort_n(int arr[],int n);//为数组前n个元素排序的函数原型声明
void main()
{
	int a[MAX];
	int num,i;
	cout<<"请输入要排序的元素个数（不超过"<<MAX<<"）：";
	cin>>num;
	cout<<"请输入"<<num<<"个要排序的整数：";
	for (i=0;i<num;i++)//接收要排序的整数
	{
		cin>>a[i];
	}
	sort_n(a,num);//调用自定义函数，实现排序
	cout<<"从大到小的排序结果：";
	for (i=0;i<num;i++)
	{
		cout<<a[i]<<"  " ;
	}
	cout<<endl;
}
void sort_n(int arr[],int n)
{
	int max,max_index;//用于存放当前最大值及最大值下标
	int i,j;
	for (i=0;i<n-1;i++)//对n个元素排序，只需确定n-1个元素的顺序即可
	{
		max=arr[i];//把当前元素看成最大
		max_index=i;//记住当前最大值下标
		for (j=i+1;j<=n;j++)//从当前位置的下一位置开始寻找最大值
		{
			if (arr[j]>max)//如有对当前最大值大的元素
			{
				max=arr[j];//更改最大值
				max_index=j;//更改最大值下标
			}
		}
		if (i!=max_index)//如果当前位置上的不是最大值，则进行交换
		{
			arr[max_index]=arr[i];
			arr[i]=max;
		}
	}
}