数组重新排序,使奇数位于偶数前(待续)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组重新排序,使奇数位于偶数前(待续)相关的知识,希望对你有一定的参考价值。

在软件公司的面试题中,经常会见到要求重新排列数组,使奇数全部位于偶数前,该问题一般有三个版本

1所有奇数位于偶数前即可,此种问题是最简单的一种

2 奇偶数都重新按大小排序

3 奇偶数保持在原数组中的顺序不变

其中2和3的实现方法差不多,现在先实现第一个版本,另外两个再后需补充

 1 void Sort(int arr[],int n)
 2 {
 3       int *head=arr;
 4       int *rear=arr+n-1;
 5       int temp;
 6       while(head<rear)
 7       {
 8            if(*head%2!=0)
 9                  head++;
10            else
11                if(*rear%2==0)
12                   rear--;
13                 else
14                    {
15                          temp=*head;
16                          *head=*rear;
17                          *rear=temp;
18                    }
19        }
20 }

该段代码即为简单的实现奇偶分开的代码,并不能保证奇偶数的顺序与在原数组中一致。
如 输入 :3,7,4,9,8

    输出:3,7,9,8,4

head用于检测是否为偶数,不是则继续比较下一个元素;rear用于检测是否为奇数,不是则比较下一元素;若head为偶数,而rear为奇数,则交换

 

以上是关于数组重新排序,使奇数位于偶数前(待续)的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer调整数组顺序使奇数位于偶数前面

剑指offer--21调整数组顺序使奇数位于偶数前

《剑指Offer》题目:调整数组顺序使奇数位于偶数前面

刷题14 调整数组顺序使奇数位于偶数前面

调整数组顺序使奇数位于偶数前面

调整数组顺序使奇数位于偶数前面