调整数组顺序使得奇数位于偶数前面
来源:互联网 发布:淘宝店铺名字卖女装的 编辑:程序博客网 时间:2024/05/17 23:27
/*****************************************************题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所以偶数位于数组的后半部分。*****************************************************/#include<stdio.h>void reOrder(int* data, int length){if(data == NULL || length <= 0)return;int* pBegin = data;int* pEnd = data + length -1;<span style="white-space:pre"></span>//设置两个指针,当第一个指针指向奇数,第二个指向偶数,交换数字while(pBegin < pEnd){while(((*pBegin) & 1) && pBegin<pEnd)++pBegin;while(!((*pEnd) & 1) && pBegin<pEnd)--pEnd;if(pBegin < pEnd){int temp = *pBegin;*pBegin = *pEnd;*pEnd = temp;}}}void printfArray(int* data,int length){for(int i=0; i<length; ++i){printf("%d\t", data[i]);}printf("\n");}int main(){const int length = 10;int data[10] = {1,2,3,4,5,6,7,8,9,10};printfArray(data, length);reOrder(data, length);printfArray(data, length);return 0;}
方法:不利用指针,利用数组索引
void swap(int* a, int* b){int temp = *a;*a = *b;*b = temp;}void ReorderOddEven_1(int* arr, int len){if(arr == NULL || len <=0)return;int index1 = 0;int index2 = len-1;while(index2 > index1){while(index2 > index1 && (arr[index1] & 0x1) != 0)index1++;while(index2 > index1 && (arr[index2] & 0x1) == 0)index2--;swap(&arr[index1], &arr[index2]);index1++;index2--;}}
0 0
- 调整数组顺序使得奇数位于偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 调整数组顺序,使得奇数总位于偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 【剑指offer】调整数组顺序使得奇数位于偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 剑指offer_调整数组顺序使得奇数位于偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 调整数组顺序使得奇数位于偶数前面
- 调整数组顺序使得奇数位于偶数前面,且奇数与奇数,偶数与偶数之间的位置相对不变
- 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于偶数前面
- 调整数组的顺序使得奇数位于偶数的前面(剑指offer14)
- 剑指offer_14(调整数组顺序使得奇数位于偶数前面)
- #剑指offer--(15)调整数组顺序使得奇数位于偶数前面
- 【数组3】-调整数组顺序使奇数位于偶数前面
- 数组3:调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面
- 字符串移位包含问题
- MFC int 和CString的相互转化实例
- Android 无法连接实机的解决方法
- sublime Text与markdown、hlsl、graphviz
- IOS开发中的CGFloat、CGPoint、CGSize和CGRect
- 调整数组顺序使得奇数位于偶数前面
- ---------学生信息管理系统----------
- 有序的结构体数组
- linux不能不记住的查找命令
- android线程机制
- J2SE J2EE J2ME的区别 以及 MVC与SSH对应关系
- 第一周项目2 胖子伤不起
- 解决 ubuntu 只能上百度,谷歌等网站的问题
- ubuntu 12.04 安装eclipse