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

来源:互联网 发布:淘宝店铺名字卖女装的 编辑:程序博客网 时间: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
原创粉丝点击