设一系列正整数存放在一个数组中,试设计算法,将所有奇数存放在数组

设一系列正整数存放在一个数组中,试设计算法,将所有奇数存放在数组的前半部分,将所有的偶数存放在数组的后半部分。要求尽可能的少用临时单元并使用时间少。(利用C语言)请附带上注解!谢谢!

void sort(int A[],int n){
    int low=0,high=n-1;
    int temp=A[low];
    while(low<high){
        while(low<high && A[high]%2==0)
            high--;
        A[low]=A[high];
        while(low<high && A[low]%2==1)
            low++;
        A[high]=A[low];
    }
    A[high]=temp;
}
空间复杂度为O(1)
时间复杂度为O(n)

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-07-26
#include"stdio.h"main(){inta[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};intb[20],c[20],i,j=0,k=0,t;for(i=0;i<20;i++){if(a[i]%2==0){b[j]=a[i];j++;}else{c[k]=a[i];k++;}}printf("Arraybis:\n");for(t=0;t
相似回答