#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; }