//输入一个整形数组,实现一个函数,来调整该数组中数字的顺序 //使得数组中所有奇数位于数组的前半部分,所有偶数位于数组的后半部分 void print(int arr[],int sz) { int i = 0; for (i = 0; i < sz;i++) { printf("%d ", arr[i]); } printf("\n"); } void move(int arr[], int sz) { int left = 0; int right = sz - 1;//元素下标=元素个数-1 while (left < right)//循环找 { //一次找一个满足条件的数 while ((left<right)&&(arr[left] % 2 == 1)) //从前往后,循环找满足条件的数,不满足时停下,此时该数为left++ { left++; } while ((left < right) && (arr[right] % 2 == 0)) //从后往前,循环,找满足条件的数,不满足时停下,此时该数为right-- { right--; } if (left < right)//交换得到的left和right { int tmp = arr[left]; arr[left] = arr[right]; arr[right] = tmp; } } } int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int sz = sizeof(arr) / sizeof(arr[0]); move(arr,sz); print(arr,sz); return 0; }