//用两个指针i(从前往后扫描),j(从后往前扫描),当位置i的元素大于零并且 //位置j的元素小于零时,则用temp作为中间变量,交换它们的值。 //i>=j时算法结束,扫描一次,时间复杂度为o(n)。 void solve(int A[],int N){ int i=0,j=N-1; while(i<j){ if(A[i]<0)i++; if(A[j]>0)j--; if(A[i]>0&&A[j]<0){ int temp=A[i]; A[i]=A[j]; A[j]=temp; } } }
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题