#include<iostream>
using namespace std;
class KB
{
private:
int n;
int a[100];
public:
KB(int aa[],int size)
{
n=size;
for(int i=0;i<n;i++)
a[i]=aa[i];
}
void print()
{
for(int i=0;i<n;i++)
cout<<a[i]<<'\t';
cout<<endl;
}
void fun()
{
int i=0,j=n-1,temp;
while(i<j)//因为完成最后一次交换后,中间的数不需要再交换。例如i=4,j=6。就不需要再进入循环
{
for(i=0;i<10;i++)
if(a[i]>0)
break;
for(j=9;j>=0;j--)
if(a[j]<0)
break;
if(i<j)//如果没有这个条件将会造成最后一次交换错误
{ temp=a[i]; a[i]=a[j]; a[j]=temp; }
}
}
} ;
int main()
{
int b[10]={1,-2,3,-4,5,6-7,-8,9,-10,-99};
KB zk(b,10);
zk.print() ;
zk.fun() ;
zk.print() ;
}
c++,对于一个有正数和负数的数组,将其中所有小于0的元素放到所有大于0的元素的前面。使用的算法 是:从左右两个方向扫描数组,从左向右找到大于等于0的元素,从右向左找到小于0的元素,将两 者交换.
猜你喜欢
转载自blog.csdn.net/zzzzzkkk/article/details/104742806
今日推荐
周排行