一个面试题

来源:互联网 发布:mac怎么用word 编辑:程序博客网 时间:2024/05/22 13:17
 
百度面试题,假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数件和正数间元素相对位置不变。时空复杂度要求分别为:o(n),o(1)
例如  
  -3 4 2 -1 7 3 -5 
排序后 
-3 -1 -5 4 2 7 3
#include <iostream>using namespace std;int main(){int a[100];memset(a,NULL,sizeof(a));int n;while(cin >> n && n){for(int i=0;i<n;i++)cin >> a[i];int *p,*q;p = q =a;for(i=0;i<n;i++,p++){if(*p <0){int *temp = p;for(int *j=p-1;j>=q;j--,p--){int t;t = *p;*p = *j;*j = t;}p = temp;q++;}}for(i=0;i<n;i++)cout<<a[i]<<" ";cout<<endl;}}

没什么难度,写的比较差。
原创粉丝点击