在这里插入代码片\\从大到小排序
#include<stdio.h>
#define N 100
int main()
{
int a[N],i,j,n,tmp,max;\\i指定为无序数组的最前端
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
{
max=i;
for(j=i+1;j<n;j++)
if(a[j]>a[max])\\改成小于号则改变排序方式
max=j;
if (max!=i)
{
tmp = a[i];
a[i] = a[max];
a[max] = tmp;
}\\将无序数组的最大值移到最前端
}
for(i=0;i<n;i++)
printf("%d\t",a[i]);
return 0;
}
将数组分为两部分:有序和无序。记初始时,数组全为无序,使用双重循环,内重循环是为了找到无序部分数组中最大值,并将该值移到无序数组最前端,每结束一次内重循环后,数组有序部分增加一格,无序数组最前端一格归入有序数组,如此循环n-1次,数组变为由大到小排序。
排序的时间复杂度为O(n^2)。