一个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;
}
}
}