指针原来是套娃的


私信TA

用户名:uq_92467646842

访问量:43380

签 名:

数学改变科学,科学改变世界

等  级
排  名 10
经  验 25172
参赛次数 49
文章发表 128
年  龄 0
在职情况 学生
学  校
专  业 物联网工程

  自我简介:

QQ:2830671713

解题思路:

对于自带排序的语言来说,这道题是很简单的,以c++的sort为例,cmp返回真,ab的位置保持不变,cmp返回假,ab调换顺序。

也就是说我们需要实现三个功能,1.所有的奇数在偶数前面 2.奇数从大到小排序  3.偶数从小到大排序

如果ab都是奇数的话使用return a>b实现从大到小,如果ab都是偶数return a<b实现从小到大,除此之外就是将奇数放在偶数的前边。

使用return a&1   1.a是奇数,返回1,a在前边保持不变  2.a是偶数,返回0,将a换到后边。

以上三种需求可以使用return (a&1?a:-a)>(b&1?b:-b);一条语句实现,大家可以感受一下。

还有就是输入的数量不定,所以使用了一个循环,用了一个小技巧。




参考代码:

#include <iostream>
#include <algorithm>

#define ll long long
using namespace std;

int cmp(int a,int b){
	return (a&1?a:-a)>(b&1?b:-b);
}

int main()
{
	ll i,n=10;
	ll p[n];
	while(cin>>p[0]){
		for(i=1;i<n;i++)cin>>p[i];
		sort(p,p+n,cmp);
		for(i=0;i<n;i++)cout<<p[i]<<" ";
		cout<<endl;
	}

    return 0;
}




 

0.0分

156 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区