想做个外贸网站,自建网站 微信网页版,网页游戏排行榜斗地主,贵阳app软件开发目录 1.思路2. 代码 1.思路
给定两个下标left和right#xff0c;left放在数组的起始位置#xff0c;right放在数组中最后一个元素的位置循环进行一下操作 a. 如果left和right表示的区间[left, right]有效#xff0c;进行b#xff0c;否则结束循环 b. left从前往后找#… 目录 1.思路2. 代码 1.思路
给定两个下标left和rightleft放在数组的起始位置right放在数组中最后一个元素的位置循环进行一下操作 a. 如果left和right表示的区间[left, right]有效进行b否则结束循环 b. left从前往后找找到一个偶数后停止 c. right从后往前找找到一个奇数后停止 d. 如果left和right都找到了对应的数据则交换继续a
left遇到偶数停止遇到奇数left right遇到奇数停止遇到偶数right
2. 代码
void order(int arr[], int sz)
{int* left arr;int* right arr sz - 1;while (left right){// 从前往后找到一个偶数找到后停止while (((left right) (*left) % 2 ! 0)){left;}// 从后往前找找一个奇数找到后停止while (((left right) (*right) % 2 0)){right--;}// 如果偶数和奇数都找到交换这两个数据的位置// 然后继续找直到两个指针相遇if (left right){int tmp *left;*left *right;*right tmp;}}
}int main()
{int arr1[] { 1, 2, 3, 4, 5, 6, 7, 8, 9,10};int size sizeof(arr1) / sizeof(arr1[0]);order(arr1, size);for (int i 0; i size; i){printf(%d , arr1[i]);}return 0;
}