用数组编写:将一整数数列按奇数在前、偶数在后的顺序重新排放,并要求奇偶数两部分分别有序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用数组编写:将一整数数列按奇数在前、偶数在后的顺序重新排放,并要求奇偶数两部分分别有序相关的知识,希望对你有一定的参考价值。

参考技术A 那就直接用排序算法吧,因为要求有序,所以时间复杂度不会比排序本身更快。
排序的比较函数为:先比较奇偶性,一个奇数一个偶数,则返回奇数在前。若奇偶性相同,则返回他们的本来次序

例:
#include<iostream>
using std::cout;
using std::endl;

#include <algorithm>

bool _cmp(int a, int b)
int ap = a % 2, bp = b % 2;
return ap == bp ? a < b : bp == 0;


int main()
int array[] = 8, 7, 6, 5, 4, 3, 2, 1, ;
std::sort(array, array + 8, _cmp);

for (int i = 0; i != 8; ++i)
cout << array[i] << endl;

return 0;
追问

排序算法还没学 看不懂,而且要求用数组

追答

你要求结果有序,所以无论如何你都逃不掉排序的。我的这个示例代码不需要你自己写排序算法,而是利用已有的排序代码,只不过使用了自己定制的比较原则。
另外,这里用的就是数组,没有利用到数组以外的东西。

奇数偶数排序技巧分析

给定10个整数的序列,要求对其重新排序。排序要求:

1.奇数在前,偶数在后;

2.奇数按从大到小排序;

3.偶数按从小到大排序。

技巧用法:
思路 :在设置两个数组,将奇数和偶数分别存储在这两个数组中,最后在将这两个数组按要求顺序输出,那么我们既要记录新数组中的元素,又要记录新数组中的元素个数。这里有一个技巧;

int n=0;b[i],c[i]
if(a[i]%2==1)  ,b[++n]=a[i]   可一次性完成。。

 

以上是关于用数组编写:将一整数数列按奇数在前、偶数在后的顺序重新排放,并要求奇偶数两部分分别有序的主要内容,如果未能解决你的问题,请参考以下文章

算法 调整数组顺序,使得奇数在前偶数在后,分别保证奇数和偶数之间的相对位置不变

输入 10 个整数,将这 10 个数按升序排列,并且奇数在前偶数在后?

c语言分段排序 整型数组,偶数在前,奇数在后,从小到大

算法题:奇数在前 偶数在后,相对顺序保持不变

奇数偶数排序技巧分析

c语言中 排列偶数与奇数,奇数在后,偶数在前