码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-03-13 14:16:16      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

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

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为奇数,则交换

 

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

标签:

原文地址:http://www.cnblogs.com/dwj411024/p/5271741.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!