标签:
在软件公司的面试题中,经常会见到要求重新排列数组,使奇数全部位于偶数前,该问题一般有三个版本
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