大侠留步。。。给定n个数输入n-1个数怎么输入
已知数组A[1..n]的元素类型为整型,设计算法调整A,使其左边的所有元素小于零,右边的所有元素大于等于零。(要求算法的时间复杂度和空间复杂度均为0(n))Input
数组大小
数组中个元素
Output
排列后的数组元素
Sample Input
6
5 6 -1 5 1
5
3 3 -1 -1 2
Sample Output
-1 5 6 5 1
-1 -1 3 3 2
求教
#include<stdio.h> void work(int *a, int n) { int i, j, t; for(i = 0, j = n - 1; i < j;) { if(a[i] < 0){ i++; continue;} if(a[j] >= 0){ j--; continue;} t = a[i]; a[i] = a[j]; a[j] = t; } } int main() { int a[1000], n, i; while(scanf("%d", &n) != EOF) { for(i = 0; i < n; i++) scanf("%d", &a[i]); work(a, n); for(i = 0; i < n; i++) printf("%d ", a[i]); printf("\n"); } return 0; }
#include <iostream> #include <assert.h> using namespace std; int *m_data = NULL; int main(){ int m_num; cin>>m_num; if(!m_data) m_data = new int[m_num]; assert(m_data!=NULL); for(int i=0;i<m_num;i++){ cin>>m_data[i]; } int _I1 = 0; for(int i=0;i<m_num;i++){ if(m_data[i] < 0){ int _I2 = m_data[i]; m_data[i] = m_data[_I1]; m_data[_I1] = _I2; _I1++; } } for(int i=0;i<m_num;i++) cout<<m_data[i]<<" "; cout<<"\n"; if(m_data) delete [] m_data; return 1; }