C语言的编程题目
编写一个程序,将整型数组中所有小于0的元素放到所有大雨于0的元素的前面,要用效率高的方法,
for(i=0,j=0;i<N;i++) if(a[i]<0)b[j++]=a[i]; for(i=0;i<N;i++) if(a[i]>0)b[j++]=a[i];
这样不知行么?N为数组的元组个数。
#include<iostream> #include<functional> #include<vector> #include<algorithm> using namespace std; int main() { vector<int> vec; vec.push_back(1); vec.push_back(3); vec.push_back(-2); vec.push_back(4); vec.push_back(-3); vector<int>::iterator it=partition(vec.begin(),vec.end(),bind2nd(less<int>(),0)); for(vector<int>::const_iterator iter=vec.begin();iter!=vec.end();iter++) { cout<<*iter<<" "; } cout<<endl; return 0; }