设计将数组A[1][n]中所有奇数移到偶数之前的算法

作者在 2009-04-12 11:33:21 发布以下内容

设计将数组A[1][n]中所有奇数移到偶数之前的算法,不另外增加存储空间,时间复杂度为o(n)

/********************************************************

算法:

从第一个数开始,如果是偶数,与最后一个数交换,同时将最后一个数排除出去,不用处理了;如果是奇数的话,就继续下一次循环....这样进行下去,直到这个数是应该处理的数的最后一个为止

**************************************************************/

#include <stdio.h>

#define SIZE 10

void sort(int a[],int n)

{

        int i,len,temp;

        len=n-1;

        for(i=0;i<len;)

        {

                if((a[i]&0x01)==0) //判断是否为偶数

                {

                        temp=a[len];

                        a[len]=a[i];

                        a[i]=temp;

                        len--;

                }

                else

                        i++;

        }

}

int main()

{

        int a[SIZE]={0},i;

        for(i=0;i<SIZE;i++)

                scanf("%d",&a[i]);

        sort(a,SIZE);

        for(i=0;i<SIZE;i++)

                printf("%-5d",a[i]);

        printf("\n");

        return 0;

}

原创 | 阅读 4553 次
文章评论,共0条
游客请输入验证码
浏览190824次