77.调整数组顺序使奇数位于偶数前面 知识点:数组:快速排序:冒泡排序: 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 例如: 输入:1,2,3,4: 输出:1,3,2,4: 输入:2,4,6,5,7: 输出:5,7,2,4,6: 假设这个题我们没有最后一句话,也就是不用保持相对位置,只让奇数在前,偶数在后就可以了: 解法一: 遍历数组,遇到奇数的时候就把它前面的…
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 法一: public class Solution { public void reOrderArray(int [] array) { int oddCnt=0; for(int val : array){ if((val & 0x1) == 1) oddCnt++; } int[] copy = array.clone();…
一.题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 二.思路 此题可以用类似冒泡排序的算法来解答.遍历数组,当相邻两个数,前面的数是偶数,后面的数是奇数时,交换两个数.第一轮遍历下来,数组最后面的一个偶数就排好了,接着进行第二轮第三轮,直到所有偶数都排到奇数后面为止. 三.代码 public class Solution { public void reOrderA…
题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分 思路: 我认真看了一下,题目应该是要求在原地调整,所以这里不能再开辟一个数组 第一种:从头往尾扫描数组,遇到一个偶数就把它提出来,依次把其后的数字前移一格,最后将偶数插入末尾的空位.时间复杂度为O(n2) 第二种:采用两指针分别从首尾出发,当头指针遇到一个偶数,并且尾指针遇到一个奇数时,交换两指针的数字,直到两指针相遇.时间复杂度为O(n),(类似于快排) 实现…
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 解题思路 题目中要求奇数和奇数,偶数和偶数之间的相对位置不变,就不能使用类似于快速排序的头尾双指针向中间靠拢的方式来计算.必须两个指针全部从头部开始,锁定第一个扫描到的奇数和偶数,将偶数后移,奇数插入.具体步骤如下: 1. 判断数组大小是否为0,为0直接返回: 2.初始化指针i=0,j=i+1,及临时变量tmp: 3.…
总结 1. 之前不确定这种题的最终解法, 现在明确了, 就是一次快排…
题目:输入一个整数数组,实现一个函数来调整该数组中的数字的顺序, 使得所有的奇数位于数组的前半部门,所有的偶数位于数组的后半部门. 这一题一看其实是很简单的,当然在不考虑效率的情况可以这样考虑 我们将数组从前开始索引只要发现偶数这将偶数取出来并且将偶数后 面的元素全部前移一个然后将偶数插入到最后,这样扫描一遍之后 就将偶数全部放在了后半部门,奇数放在了前半部分.但是效率不好 每次遇到偶数都要移动偶数后面的所有元素再加上遍历数组的时间 则达到了O(n2) 我们可以用两个索引或者指针,一个指向数组的…
题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 分析 事实上,这个题比较简单,很多种方式都可以实现,但是其时间复杂度或空间复杂度不尽相同. 解法一 书中作者提到一种初始的做法是,从头扫描整个数组,如果遇到偶数,则拿出这个数,并且把整个数组的数据都向前挪动一位,再把拿出的数放到末尾.每碰到一个偶数就需要移动O(N)次,这样总的时间复杂度为O(n^2),空间复杂度为O(1). 这种方式很简单,如果已经很清楚是怎么回事,可以跳…
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 思路 对于任意一个整数数组,设置一个指针,从前往后走,如果遇到奇数则指针后移,遇到偶数时,希望把该偶数放在数组后面:因此,再设置一个指针,从后往前走,遇到偶数时指针前移,遇到奇数时,则恰好可以与前面的指针所指的偶数进行调换. 测试算例 1.功能测试(数组中奇…
剑指Offer - 九度1516 - 调整数组顺序使奇数位于偶数前面2013-11-30 02:17 题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 输入: 每个输入文件包含一组测试案例.对于每个测试案例,第一行输入一个n,代表该数组中数字的个数.接下来的一行输入n个整数.代表数组中的n个数. 输出: 对应每个测试案例,输入一行n个数字,代表调整后的数组.注意…