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

来源:互联网 发布:vb mac 编辑:程序博客网 时间:2024/05/29 23:48

思路:

利用两个分别指向数组头尾的指针。假如:first指向数组的第一个元素,end指针指向数组的最后一个元素。向后移动first指针直到它指向偶数,向前移动end指针直到它指向奇数。交换两个指针指向的内容。继续移动,符合条件就继续交换。直到end指针在first指针前,表明所有的奇数全都位于偶数的前面。

void ReOrderArray(int* arr, int len){if (arr == NULL || len <= 0)return;int* first = &arr[0];int* end = &arr[len - 1];while (first < end){while (first < end && *first % 2 != 0)//移动,直到遇到偶数{first++;}while (first < end && *end % 2 == 0){end--;}swap(*first, *end);}}void Test(){int arr[] = { 1, 2, 3,4 ,3,4, 5, 6, 7, 8, 9 };ReOrderArray(arr, sizeof(arr) / sizeof(arr[0]));for (size_t i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i){cout << arr[i] << " ";}cout << endl;}int main(){Test();system("pause");return 0;}


0 0