冒泡法找出数组里最大值和最小值,请高手看一下对不对?

2020-01-16 18:31发布

只需要找出最大值和最小值就可以了,最后的结果是a[0]为最小,a[9]为最大,试了几次,没有问题,不知道这种方法行不行的通,看到网上的冒泡法都要循环更多次,给修改了一下。
void testS(void)  
{  
        unsigned char a[10]={240,208,241,98,100,21,187,237,228,21};
    unsigned char t=0,j=0;
        for(j=0;j<9;j++)          //每趟比较j+1次  
                if(a[j]>a[j+1])          //从左至右依次比较两个相邻的数,将小数放在前面,大数放在后面  
            {  
                t=a[j];  
                a[j]=a[j+1];  
                a[j+1]=t;  
            }
        for(j=8;j>0;j--)          //每趟比较j-1次  
                if(a[j]<a[j-1])          //从右至左依次比较两个相邻的数,将小数放在前面,大数放在后面  
            {  
                t=a[j];  
                a[j]=a[j-1];  
                a[j-1]=t;  
            }
        for(t=0;t<10;t++)
                {                                                    
                        DISP_BL(t,a[t]);  //送至数码管显示
                        j=20;
                        while(j)
                        {
                                Delay(200);        //延时
                                j--;       
                        }
                }
        j=20;
        while(j)
        {
                Delay(200);        //延时
                j--;       
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
41条回答
kevin_me
2020-01-18 12:00
本帖最后由 kevin_me 于 2016-11-10 09:58 编辑
  1. /*
  2. u8 minAndmax(u16 *data,u8 lenth,struct MinMax *MinMaxValue)
  3. 参数1: *data:调用函数的数据指针,u16整型数据
  4. 参数2: u8 lenth:数据长度
  5. 参数3: struct MinMax *MinMaxValue:最大值和最小值存储的结构体地址
  6. 参数4:        u8 find_subindex:值为1,返回最大值下标,值为2,返回最小值下标, 其余返回0
  7. 返回值:返回*data数组最值点的下标(只取位移的,不管载荷的)
  8. */
  9. u8 minAndmax(u16 *data,u8 lenth,struct MinMax *MinMaxValue,u8 find_subindex){
  10.   u16 temp_data[250];
  11.         u8 index=0;
  12.         u16 min,max=0;
  13.         u8        sub_index=0;
  14.         for(index=0;index<lenth;index++)
  15.         {
  16.                 temp_data[index]=*data++;
  17.         }
  18.   min=temp_data[0];
  19.         max=temp_data[0];
  20. /*提取最大最小值*/
  21.         for(index=0;index<lenth;index++)
  22.         {
  23.                 min=(temp_data[index]<min)?temp_data[index]:min;
  24.                 max=(temp_data[index]>max)?temp_data[index]:max;
  25.   }
  26.         MinMaxValue->Min=min;
  27.   MinMaxValue->Max=max;       
  28.         if(find_subindex==1)
  29.         {
  30.                 for(index=0;index<lenth;index++)
  31.                 {               
  32.                         if(temp_data[index]==max)
  33.                         {
  34.                                 sub_index=index;
  35.                                 break;
  36.                         }
  37.                 }
  38.                 return        sub_index;
  39.         }
  40.         else if(find_subindex==2)
  41.         {
  42.                 for(index=0;index<lenth;index++)
  43.                 {               
  44.                         if(temp_data[index]==min)
  45.                         {
  46.                                 sub_index=index;
  47.                                 break;
  48.                         }
  49.                 }
  50.                 return        sub_index;
  51.         }
  52.         else       
  53.                 return 0;                               
  54. }
复制代码

一周热门 更多>