标题:[求助]请问有什么好的算法实现奇偶排序
取消只看楼主
虫的传人
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-3-5
 问题点数:0 回复次数:3 
[求助]请问有什么好的算法实现奇偶排序
譬如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
虫的传人
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-3-5
得分:0 
以下是引用feng1256在2006-3-16 22:07:00的发言:
你可以考虑放两数组里(奇 偶) 然后各自排序(可调用一排序函数)

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


好马不吃回头草 然而,我不是好马 可见,坏马也不吃回头草
2006-03-16 22:18
虫的传人
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-50915-1-1.html




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

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