| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1734 人关注过本帖
标题:[求助]请问有什么好的算法实现奇偶排序
只看楼主 加入收藏
虫的传人
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-3-5
收藏
 问题点数:0 回复次数:10 
[求助]请问有什么好的算法实现奇偶排序
譬如a[9]={1,2,3,4,5,6,7,8,9}
要求排序后得到这个一个数组:a[9]={2,4,6,8,1,3,5,7,9}
有人知道算法吗?
谢谢
搜索更多相关主题的帖子: 算法 奇偶 
2006-03-16 22:01
cxwl3sxl
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:495
专家分:129
注 册:2005-11-12
收藏
得分:0 
输出后是不是都要安一定的顺序哦?

努力,哈哈,总有一天会变成高手~~~~~~因为我相信:没有办不到,只有想不到!http://t..cn/fpress
2006-03-16 22:04
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
你可以考虑放两数组里(奇 偶)  然后各自排序(可调用一排序函数)

叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-16 22:07
cxwl3sxl
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:495
专家分:129
注 册:2005-11-12
收藏
得分:0 
定义一个指针,依次读入数组中的数,先判断是奇还是偶,假如是偶数,先存入另一个数组里面,依次进行,然后排序输出,奇数同理处理!应该可以!!

努力,哈哈,总有一天会变成高手~~~~~~因为我相信:没有办不到,只有想不到!http://t..cn/fpress
2006-03-16 22:09
虫的传人
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-3-5
收藏
得分:0 
以下是引用feng1256在2006-3-16 22:07:00的发言:
你可以考虑放两数组里(奇 偶) 然后各自排序(可调用一排序函数)

如果用两个数组是不错,但是我想在一个数组里面完成啊,所以有点麻烦
重点是我把奇数(或者偶数)找出来后,排序,然后如何将他们重新放回原来那个数组


好马不吃回头草 然而,我不是好马 可见,坏马也不吃回头草
2006-03-16 22:18
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

少写一个数组倒可以~但只用原来的数组,我看困难


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-16 22:22
虫的传人
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-3-5
收藏
得分:0 
以下是引用cxwl3sxl在2006-3-16 22:09:00的发言:
定义一个指针,依次读入数组中的数,先判断是奇还是偶,假如是偶数,先存入另一个数组里面,依次进行,然后排序输出,奇数同理处理!应该可以!!

说说我的想法
我是想用scanf函数得到一组数字,然后通过函数调用实现对他们的奇偶排序
而我想这些动作都在一个数组里面完成
或者你看看我这个尝试(但是无法完成


#include<iostream>


void pick(int x[],int n)
{
int i=0,j=0;
while(x[i++]%2==0)
x[j++]=x[i];
i=0;
while(x[i++]%2)
x[j++]=x[i];
}

void sort(int m[],int len)
{
int i,j,k,t;
for(i=0;i<len-1;i++)
{k=i;
for(j=i+1;j<len;j++)
if(m[k]>m[j])k=j;
if(k!=i)
{t=m[k];m[k]=m[i];m[i]=t;}
}
}

void main()
{
int a[20];
printf("Please input the numbers:\n");
scanf("%d",a);
printf("\nThe unsort numbers:\n%d",a);
printf("\n");
pick(a,20);
sort(a,20);
printf("The sorted numbers:\n%d",a);
}


好马不吃回头草 然而,我不是好马 可见,坏马也不吃回头草
2006-03-16 22:26
虫的传人
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-3-5
收藏
得分:0 
以下是引用feng1256在2006-3-16 22:22:00的发言:

少写一个数组倒可以~但只用原来的数组,我看困难

这样啊
我再尝试尝试,谢谢版主


好马不吃回头草 然而,我不是好马 可见,坏马也不吃回头草
2006-03-16 22:27
西单小六
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2011-12-12
收藏
得分:0 
貌似…这个不叫奇偶排序……
2011-12-29 21:32
qq472953586
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2011-11-18
收藏
得分:0 
#include "stdio.h"
main()
{
    int a[9]={1,2,3,4,5,6,7,8,9},i,b[9],c,k,d,m=0;
    for(i=0;i<9;i++)                                   /先用第一个循环求出偶数的顺序,从小到大排列/
    {
     if(a[i]%2==0)
     {
        b[m]=a[i];
        if(b[m]<b[m-1]&&m!=0)                         /偶数排列大小,大小的位置转换/
         {
         c=b[m-1];                  
         b[m-1]=b[m];                                 
         b[m]=c;
         }
         m++;                                          /m为b数组的位置/
      }
    }
    d=m;                                           /下面条件需要,因为奇数转换需要从第二个奇数进入数组后开始排列,所以下面是d<m/
    for(k=0;k<9;k++)                          
    {
      if(a[k]%2!=0)
      {
         b[m]=a[k];
         if(b[m]<b[m-1]&&d<m)                       /奇数排列,大小的位置转换/
         {
          c=b[m-1];
          b[m-1]=b[m];
          b[m]=c;
          }
          m++;
      }
     }
       for(i=0;i<9;i++)
       printf("%d,",b[i]);                            /输出结果/
       getch();
}
2011-12-30 18:55
快速回复:[求助]请问有什么好的算法实现奇偶排序
数据加载中...
 
   



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

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