C/C++ 基础算法题
奇偶排序*
题目描述
编程对数组元素进行排序。
排序要求:
- 奇数在前,偶数在后,即奇数小标比偶数小;
- 奇数按从小到大排列;
- 偶数按从大到小排列。
例如:排序前数组a为{1 2 3 4 5},排序后为{1 3 5 4 2}。
参考代码
#include <iostream>
using namespace std;
int main()
{
int n, i, j, tmp;
cin >> n;
int a[n];
for(i = 0; i < n; i++){
cin >> a[i];
}
for(i = 0; i < n-1; i++)
{
for(j = 0; j < n-1; j++)
{
if(a[j] % 2 == 0 && a[j+1] % 2 != 0 ||
a[j] % 2 != 0 && a[j+1] % 2 != 0 && a[j] > a[j+1] ||
a[j] % 2 == 0 && a[j+1] % 2 ==0 && a[j] < a[j+1])
{
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
for(i = 0; i < n; i++) cout << a[i] <<" ";
return 0;
}