左奇右偶

题目描述: 现有一个长度为10的整数数组{26,67,49,38,52,66,7,71,56,87}。现在需要对元素重新排列,使得所有的奇数保存到数组左边,所有的偶数保存到数组右边。

开发提示:

  • 左边的偶数与右边的奇数换位置:
  • 定义两个变量left和right,从左边开始查找偶数的位置,找到后用left记录,从右边开始找奇数的位置,找到后用right记录,如果left<right,那么就交换,然后在上一次的基础上继续查找,直到left与right擦肩。
		// {26,67,49,38,52,66,7,71,56,87} 目标 左奇右偶
        int[] nums = {26,67,49,38,52,66,7,71,56,87};

        for (int left = 0, right = nums.length - 1; left < right; ){
            // left代表左边需要交换数的下标
            while (nums[left] % 2 != 0) left++;
            while (nums[right] % 2 ==0) right--;

            if (left < right) {
                int tmp = nums[left];
                nums[left] = nums[right];
                nums[right] = tmp;
            }
        }
        System.out.println(Arrays.toString(nums)); // [87, 67, 49, 71, 7, 66, 52, 38, 56, 26]

全部评论

相关推荐

11-03 17:42
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务