将数组中全部小于或等于0的元素都放在数组前面,大于0的元素放在数组后面
将数组中所有小于或等于0的元素都放在数组前面,大于0的元素放在数组后面
深信服笔试:
【编程】对于一个给定的整形数组int array[n],将数组中所有小于或等于0的元素都放在数组前面,大于0的元素放在数组后面
#include <stdio.h> /* 要求时间复杂度为O(n) */ void Divide(int array[],int n) { int i = 0,j = 0; int temp = 0; for(j = 0;j < n;j++) { if(array[j] <= 0) //将小于0的数据存在array[i]起的数组里,i从0开始 { temp = array[j]; array[j]= array[i]; array[i]= temp; i++; } } } int main(void) { int i = 0; int a[10] = {-8,82,76,-4,27,34,-26,-92,0,7}; Divide(a,10); for(i = 0;i < 10;i++) printf("%4d",a[i]); printf("\n"); return 0; }执行结果: