大侠留步。。。给定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;
}