#include<iostream>
#include <cstring>
#include <fstream>
using namespace std;
#define MAXLEN 255
/*
n个整数存放在数组中,将正数排在负数前,时间复杂度为O(n)
*/
void change(int a[],int i,int j){
int a1 = a[i];
a[i] = a[j];
a[j] = a1;
}
void Arrange(int a[],int n){
int i,j;
i = 0;
j = n-1;
while((i!=j) &&(j+1 != i)){
while(a[i]>0 )i++;
while(a[j]<0)j--;
change(a,i,j);
}
change(a,i,j);
}
//修改
void Arrange1(int a[],int n){
int i,j;
i = 0;
j = n-1;
while(i < j){
while(a[i]>0 && i<j )i++; //添加i<j条件,就可以避免多交换一次
while(a[j]<0 && i<j)j--;
change(a,i,j);
}
}
int main(){
int a[]={-1,-2,1,2,5,-8,-8,2};
Arrange1(a,8);
for(int i=0;i<8;i++) cout << a[i];
system("pause");
return 0;
}