6.设任意n个整数存于数组A[1...n]中,试编写算法,将所有正数排在所有负数前面(要求:算法时间复杂度为O(n).
#include <stdio.h>
int partition(int *a,int low,int high){
int temp = a[low];
while(low < high){
while(low <high && a[high]<= 0)high--;
a[low] = a[high];
while(low < high && a[low] >=0)low++;
a[high] = a[low];
}
a[low] = temp;
return low;
}
int main() {
int array[] ={-3,2,4,-5,0,-4,9,-10,4,5};
partition(array,0,9);
for(int i = 0;i <10;i++){
printf("%d ",array[i]);
}
return 0;
}
算法有点像快速排序,数值点设置为0就行了