题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中
所有奇数全部位于前半数组,所有偶数全部位于后半数组。
题目分析:
一个整型数组中既有奇数又有偶数,欲使所有奇数全部位于前半数组,所有偶数全部位于后半数组,
那么我们不妨从前边查找偶数即arr[left]%2==0,如果不是偶数它将继续向后查找left+1,直到找到偶数,同时从后边
查找奇数即arr[left]%2==1,如果不是奇数它将继续向前查找right-1,将前边找到的奇数和后边找到偶数交换,的当两
个数组相遇时前边的就全为奇数,后边的就全为偶数。
代码实现如下:
<span style="font-size:14px;">#include<stdio.h> void odd_before(int arr[],int sz) { int left = 0; int right = sz-1; int tmp = 0; while(left<right) { while((arr[left]%2 == 0)&&(arr[right]%2 == 1)) //前边为偶数后边为奇数时交换这两个数 { tmp = arr[left]; arr[left] = arr[right]; arr[right] = tmp; } while(arr[left]%2 == 1)//当前边为奇数left+1,向后查找 { left++; } while(arr[right]%2 == 0)//当后边不为奇数时right-1,向前查找 { right--; } } } int main() { int arr[] = {1,2,4,3,6,5,0}; int sz = sizeof(arr)/sizeof(arr[0]); int i = 0; odd_before(arr,sz); for(i = 0;i<sz;i++) { printf("%d",arr[i]); } printf("\n"); system("pause"); return 0; }</span>
运行结果:
时间: 2024-10-10 09:02:44