13调整数组顺序使奇数位于偶数前面
2017-11-15 15:54
232 查看
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路1:
用辅助数组存,时间复杂度O(N) 空间复杂度O(N)
1 public class Solution { 2 public void reOrderArray(int [] array) { 3 int[] res = new int[array.length]; 4 int j =0; 5 for(int i =0;i<array.length;i++){ 6 if(array[i]%2!=0) 7 res[j++]=array[i]; 8 } 9 for(int i =0;i<array.length;i++){ 10 if(array[i]%2==0) 11 res[j++]=array[i]; 12 } 13 for(int i=0;i<array.length;i++){ 14 array[i]=res[i]; 15 } 16 } 17 }
思路2:冒泡排序
1 public class Solution { 2 3 public void reOrderArray(int [] array) { 4 for(int i = 0;i < array.length-1;i++){ 5 for (int j = 0;j<array.length-i-1;j++){ 6 if(array[j]%2==0 && array[j+1]%2!=0) 7 swap(array,j,j+1); 8 } 9 } 10 } 11 private void swap(int[] a,int i,int j){ 12 int tem= a[i]; 13 a[i]=a[j]; 14 a[j]=tem; 15 } 16 }
更新20180307
1 # -*- coding:utf-8 -*- 2 class Solution: 3 def reOrderArray(self, a): 4 # write code here 5 def swap(a,i,j): 6 temp =a[i] 7 a[i] =a[j] 8 a[j] =temp 9 for i in range(len(a)): 10 #for j in range(i,len(a)-1)[::-1]:#向上冒泡 11 for j in range(0,len(a)-i-1):#向下沉 12 if(a[j+1]%2==1 and a[j]%2==0): 13 swap(a,j,j+1) 14 return a
相关文章推荐
- [剑指Offer] 13.调整数组顺序使奇数位于偶数前面
- 剑指Offer面试题:13.调整数组顺序使奇数位于偶数前面
- 剑指offer 13 调整数组顺序使奇数位于偶数前面
- 剑指offer题解C++【13】调整数组顺序使奇数位于偶数前面
- 剑指offer13 调整数组顺序使奇数位于偶数前面
- 【13】调整数组顺序使奇数位于偶数前面
- 剑指Offer_13_调整数组顺序使奇数位于偶数前面
- 剑指Offer——(13)调整数组顺序使奇数位于偶数前面
- 剑指offer:(13)代码的完整性: ]调整数组顺序使奇数位于偶数前面
- 剑指Offer [13] 调整数组顺序使奇数位于偶数前面
- 剑指Offer--13.调整数组顺序使奇数位于偶数前面
- 13 调整数组顺序使奇数位于偶数前面
- 剑指Offer(13)______调整数组顺序使奇数位于偶数前面
- (C++)剑指offer-13:调整数组顺序使奇数位于偶数前面(代码的完整性)
- 13、调整数组顺序使奇数位于偶数前面
- 剑指offer-13.调整数组顺序使奇数位于偶数前面
- 【剑指offer】13调整数组顺序使奇数位于偶数前面
- 剑指offer(13)—调整数组顺序使奇数位于偶数前面
- 调整数组顺序使奇数位于偶数前面(剑指Offer 第 13 题)
- 调整数组顺序使奇数位于偶数前面