一个int 数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。

来源:互联网 发布:练歌的软件 编辑:程序博客网 时间:2024/05/22 21:54

一个int 数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。

本文没有开辟新的空间,只是进行数据的交换,并且没有使用额外的数组。

对数组中的每一个数进行验证,以确定它是否符合左边都小于它,右边都大于它的。

void main()
{
 int a[]={1,2,4,3,5,7,6,8};
 int i,j,left,right;
 int len= sizeof(a)/sizeof(int);
 for(i = 1 ;i<len-1 ;i++)
 {  
   left =1;
  for(j = 0 ;j<i ;j++)
  {
  
   if(a[i]<=a[j])
   {
    left = 0;
   }
  }
  right = 1;
  for(j = i+1 ;j<len ;j++)
  {
  
   if(a[i]>=a[j])
   {
    right = 0;
   }
  }
  if(left ==1 &&(right ==1))
  {
   cout<<a[i]<<endl;
  }
 }
 
}

原创粉丝点击