分享

c51单片机100个数从小到小大排序问题

 guitarhua 2013-11-09

 //冒泡排序                     验证过  

  void   MpSort(int   a[],int   len,int   flag)  
  {  
  int   i,j,t=0;  
      for(i=0;i<len-1;i++)  
          for(j=0;j<len-i-1;j++)  
          {  
              if(flag==0)  
  {  
  if(a[j]>a[j+1])  
  {  
  t=a[j];  
  a[j]=a[j+1];  
  a[j+1]=t;  
  }  
  }  
              else  
  {  
  if(a[j]<a[j+1])  
  {  
  t=a[j];  
  a[j]=a[j+1];  
  a[j+1]=t;  
  }  
  }  
              }  
  }  
   
  //查找排序       验证过  
  void   FindSort(int   a[],int   len,int   flag)  
  {  
  int   i,j,t;  
      for(i=0;i<len;i++)  
          for(j=i+1;j<len;j++)  
          {  
              if(flag==0)  
  {  
  if(a[i]>a[j])  
  {  
  t=a[i];  
  a[i]=a[j];  
  a[j]=t;  
  }  
  }  
              else  
  {  
  if(a[i]<a[j])  
  {  
  t=a[i];  
  a[i]=a[j];  
  a[j]=t;  
  }  
  }  
  }  
  }  
   
  //快速排序  
  void   QuickSort(int   a[],   int   left,   int   right)  
  {  
  int   mid,   mid1,   l,   r,   temp;  
  l=left;  
  r=right;  
  mid1=(left   +   right)/2;  
  mid=a[mid1];  
   
  while(l<r)  
  {  
  while(a[l]   <   mid)  
        ++l;  
  while(a[r]   >   mid)  
        --r;  
   
  if(l>r)  
  break;  
   
  temp   =   a[l];  
  a[l]   =   a[r];  
  a[r]   =   temp;  
   
  if(l!=   mid1)  
        --r;  
  if(r   !=   mid1)  
        ++l;  
  }  
   
  if(l   ==   r)  
        l++;  
  if(left   <   r)  
        qsort(a,   left,   l-1);  
  if(l   <   right)  
        qsort(a,   r+1,   right);      
  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多