#include <stdio.h>
#define u8 unsigned char
u8 array[8] ={1,5,2,9,7,4,8,6};
u8 GetMax(u8 *Buf,u8 Length)
{
u8 i,j,temp;
u8 Fg_CmpOver;
for(i=0; i<Length-1; i++)
{
// 本趟排序开始前,转换完成标志应为假
Fg_CmpOver = 0;
for(j=0; j<Length-1-i; j++)
{
// 相邻元素进行比较,若逆序就交换
if(Buf[j] < Buf[j+1])
{
temp = Buf[j];
Buf[j] = Buf[j+1];
Buf[j+1] = temp;
// 发生了交换,故将转换完成标志置为真
Fg_CmpOver = 1;
}
}
// 本趟排序未发生交换,提前终止算法
if(Fg_CmpOver == 0)
break;
}
// 由于是从大到小排列,所以Buf[0]即为最大值
return Buf[0];
}
void main()
{
u8 i;
printf("Max = %d\n",GetMax(array,8));
for(i=0; i<8; i++)
printf("%d ",array[i]);
printf("\n ");
}