| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 569 人关注过本帖
标题:求大神给写一段代码
只看楼主 加入收藏
二蛋
Rank: 1
来 自:湖北仙桃
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-11-23
收藏
 问题点数:0 回复次数:6 
求大神给写一段代码
将n个正整数存放于一个一维数组a中,试设计一个算法,将所有的奇数移动并存放于数组的前半部分,将所有的偶数移动并存放于数组的后半部分,要求尽可能少地使用临时存储单元,并使计算时间达到O(n)。
搜索更多相关主题的帖子: 移动 正整数 
2012-11-23 12:30
二蛋
Rank: 1
来 自:湖北仙桃
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-11-23
收藏
得分:0 
暂时还没有积分,没办法,求助,好人一生平安。

新手上路,还望诸位给予帮助!!!
2012-11-23 12:30
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
void test(int *pAddr, int nCount)
{
    if (pAddr == NULL) {
        return;
    }
     int nBegin = 0;
     int nEnd = nCount-1;

    while (nBegin < nEnd) {
        // 找到最前面的偶数
        while (pAddr[nBegin] % 2 == 1) {// 基数
            nBegin++;
        }
        
        // 找到最前后的基数
         while (pAddr[nEnd] % 2 == 0) {// 偶数
            nEnd--;
        }
        
        if (nBegin < nEnd) {
            int temp = pAddr[nBegin];
            pAddr[nBegin] = pAddr[nEnd];
            pAddr[nEnd] = temp;            
        }        
    }     
}

int main()
{
    int n[] = { 1,2,3,4,5,6,76,896,9,9,9,9,9,9,8,8,0,12};
    test(n, sizeof(n)/ sizeof(int));                  
}

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-11-23 15:37
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
保证了基数在前,偶数在后,并没有按大小排序

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-11-23 15:40
凌云飞翔
Rank: 5Rank: 5
来 自:河北
等 级:职业侠客
威 望:6
帖 子:98
专家分:388
注 册:2012-4-7
收藏
得分:0 
#include <stdio.h>
main ()
{ int a[20] ,t ,k ,i ,m ,n ;
 printf ("请输入数字的个数:\n") ;
 scanf ("%d", &t ) ;
 printf ("请输入数字:\n")  ;
 for (i=0 ;i<t ;i++ )
     scanf ("%d",&a[i]) ;
   k=t ;
 for (i=0;i<t;i++)
     if(a[i]%2==0)
     if (a[t-1]%2!=0)
     {   m=a[i] ;
          a[i]=a[t-1]  ;
          a[t-1]=m ;
          t--  ;
     }
     else
     {while (i<t)
     {    t--  ;
         if (a[t-1]%2!=0)
     {   m=a[i] ;
          a[i]=a[t-1]  ;
          a[t-1]=m ;
          t-- ;
          break ;
         } // if
     } //while
     }// else
     for (n=0 ;n<k ;n++)
         printf ("%4d",a[n]);
       printf ("\n")  ;
}      你先试试吧 ,有问题咱再讨论
2012-11-23 17:04
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:0 
程序代码:
#include<stdio.h>
#define N 100
void sort(int a[N],int n)
{
    int i,j,temp;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-i-1;j++)
        {
           if(a[j]>a[j+1])
           {
               temp=a[j];
               a[j]=a[j+1];
               a[j+1]=temp;
           }
        }
    }
}
int main()
{
    int n,i,j,k;
    int m,p;
    int a[N];
    int b[N],c[N];
    printf("please input the nubers of the arrry!\n");
    scanf("%d",&n);
    printf("input the arry!\n");
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("the orginal arry is \n");
    for(i=0;i<n;i++)
        printf("%d ",a[i]);
    putchar(10);
    i=0;
    j=0;k=0;
    while(i<n)
    {
        if(a[i]%2!=0)
            b[j++]=a[i++];
        else
            c[k++]=a[i++];
    }
    sort(b,j);//奇数排序
    sort(c,k);//偶数排序
    i=0;
    m=0;p=0;
    if(i<n)
    {
        while(m<j)
        {
            a[i++]=b[m++];
        }
        while(p<k)
        {
            a[i++]=c[p++];
        }
    }
    for(i=0;i<n;i++)
        printf("%d ",a[i]);
    putchar(10);
    return 0;
}
保证运行~~·不知道你的尽量少的用存储空间是啥意思啊,有没有具体点的要求。 西点复试的时候出过这道题,看到这道题很亲切啦~~

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-11-23 19:57
二蛋
Rank: 1
来 自:湖北仙桃
等 级:新手上路
帖 子:3
专家分:0
注 册:2012-11-23
收藏
得分:0 
谢谢你们,你们的代码我都研究了。

新手上路,还望诸位给予帮助!!!
2012-11-24 20:57
快速回复:求大神给写一段代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017479 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved