问题:
有一组数据,排序规则是:要求按照奇数在前,偶数在后,然后在按照大小顺序排序
算法思想:
法一:
可以先把奇数和偶数分开,再用sort()排序,然后再合并输出;
法二:
利用sort()的二级排序
//先按先奇后偶再按从小到大
#include<iostream>
using namespace std;
#include<algorithm>
bool cmp(int a, int b)
{
if (a % 2 == b & 2)
return a < b;
else
return (a % 2) > (b % 2);//mod2为1是奇数,mod2为0是偶数
}
int main()
{
int a[100] = {1,2,3,4,5,6,7,8};
sort(a, a + 8,cmp);
for (int i = 0; i < 8; i++)
{
cout << a[i] << " ";
}
return 0;
}