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

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

 1 # -*- coding:utf-8 -*-
 2 class Solution:
 3     def reOrderArray(self, array):
 4         n = len(array)
 5         i = 0
 6         while i < n:
 7             if array[i] % 2 == 1:
 8                 i += 1
 9                 continue
10             j = i + 1
11             while j < n:
12                 if array[j] % 2 == 1:
13                     break
14                 j += 1
15             if j == n:
16                 return array
17             temp = array[j]
18             for k in range(j,i,-1):
19                 array[k] = array[k-1]
20             array[i] = temp
21             i = i+1
22         return array
23         # write code here

 

补充Java的实现:

 1 class Solution {
 2     public int[] exchange(int[] nums) {
 3         int n = nums.length;
 4         int i = 0, j = n - 1;
 5         while (i < j) {
 6             while (i < n && nums[i] % 2 == 1) {
 7                 i++;
 8             }
 9             while (j >= 0 && nums[j] % 2 == 0) {
10                 j--;
11             }
12             if (i < j) {
13                 int temp = nums[i];
14                 nums[i] = nums[j];
15                 nums[j] = temp;
16                 i++;
17                 j--;
18             }
19             if (i >= j) {
20                 break;
21             }
22         }
23         return nums;
24     }
25 }

 

posted on 2019-06-12 22:12  Sempron2800+  阅读(115)  评论(0编辑  收藏  举报