2020-8-15一个数组实现奇偶分别降序排列

本文深入探讨了一段Java代码,该代码旨在对一个整型数组进行排序,特别关注于奇数和偶数元素的处理。通过复杂的for循环结构,实现了奇数和偶数的分离,并分别对它们进行了降序排序。然而,作者对为何采用特定的循环结构实现降序而非升序感到困惑,邀请读者一同探讨背后的逻辑。

public static void main(String[] args) {
int [] age={69,29,78,53,90,10,89,30,80,25,29,50,83,87,99,50};
int even=0;//声明一个变量为偶数的长度
int odd=0;//声明一个变量为奇数的长度
//分出奇数跟偶数
for(int j=0;j<=age.length-1;j++){
for(int i=age.length-1;i>j;i-- ){
if(age[i]%20&&age[j]!=0){
int a=age[j];
age[j]=age[i];
age[i]=a;
}
}
//找出偶数的长度
while(age[even]%2
0){
age[even]=age[j];
even++;
break;
}
}
for(int i=0;i<even;i++){//把偶数的集合进行降序排列
for(int j=i;j<even;j++){
if(age[i]<age[j]){
int a=age[i];
age[i]=age[j];
age[j]=a;
}
}
}
for(int i=even;i<=age.length-1;i++){//把奇数的集合进行降序排列
for(int j=even;j<=age.length-1;j++){
if(age[i]>age[j]){
int a=age[i];
age[i]=age[j];
age[j]=a;
}
}
}
for(int j=0;j<=age.length-1;j++){
System.out.print(age[j]+",");
}
}
}

在这里插入图片描述我是用结果反推的降序,没有用冒泡,思考了很久也没有理解为什么不是升序,哪位大神可以解释一下,为什么这样的两个for循环会是降序排列。

题目描述 从键盘输入10个整数(10个整数均不相同), 然后再从键盘中输入一个整数a,如果该整数a为奇数, 且与这10个整数中的任一个数相同,则删掉与a相同的 这个数,并将剩下的9个数按升序排序输出;若a为偶数, 且与这10个数都不同,则加入a,并将这11个数降序排 序输出;否则,则将这10个数奇数在前,偶数在后, 降序排列输出。例如,10个数分别为6,89,34,12, 0,-8,7815,9,3.若a为9,则输出为:-8,0,3, 6,12,15,34,7889.若a为2,则输出为:89,78, 34,15,12,9,6,3,2,0,-8.若a为7或者12,则 输出为:89,15,9,3,78,34,12,6,0,-8. 要求:使用函数解决本题,至少编写以下几个函数,1、升序排序函数void sort(int a[], int n);2、查找函数int find(int a[],int n,int value)----在大小为n的a数组中查找值为value的元素,找到就返回元素的下标,找不到,就返回-1;3、输出函数display(int a[], int n)---逐个输出数组a的元素;4、反转数组函数void reverse(int a[], int n)----数组逆序。 输入 测试数据的组数n 第一组测试数据的10个整数 第一组的整数a 第二组测试数据的10个整数 第二组的整数a ...... 第n组测试数据的10个整数 第n组的整数a 输出 第一组数据排序输出 第二组数据排序输出 ....... 第n组数据排序输出 IO模式 本题IO模式为标准输入/输出(Standard IO),你需要从标准输入流中读入数据,并将答案输出至标准输出流中。 样例查看模式 正常显示 查看格式 输入样例1 <-复制 3 6 89 34 12 0 -8 78 15 9 3 9 6 89 34 12 0 -8 78 15 9 3 2 6 89 34 12 0 -8 78 15 9 3 7 输出样例1 -8 0 3 6 12 15 34 78 89 89 78 34 15 12 9 6 3 2 0 -8 89 15 9 3 78 34 12 6 0 -8 语言: C 主题: solarized 1 ​
最新发布
12-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值