给定一个整数数组,奇数位于偶数前面

两个指针,一个指向最前,一个指向最后,依次进行交换

代码:

#include<iostream>  

using namespace std;
//使奇数位于偶数前面

void reSort(int *pData,int length){
	if(NULL == pData || length <= 0)
		return ;

	int *pBegin = pData;
	int *pEnd = pData + length -1;
	while(pBegin < pEnd){
		//奇数向前移动
		while(pBegin < pEnd &&( *pBegin & 0x1 ) != 0)
			pBegin ++;

		//偶数向前移动
		while(pBegin < pEnd &&(*pEnd & 0x1) == 0)
			pEnd --;

		if(pBegin < pEnd){
			int temp;
			temp = *pBegin;
			*pBegin = *pEnd;
			*pEnd = temp;
		}

	}
}

void print(int *number,int length){
	for(int i = 0; i< length ;i++){
		printf("%d",number[i]);
	}
}

int main()
{
	int data[] = {1,2,2,2,5,5,5};
	reSort(data,sizeof(data) / sizeof(int) );
	print(data,sizeof(data) / sizeof(int)  );
    return 0;
}  

给定一个整数数组,奇数位于偶数前面

时间: 2024-07-30 11:01:49

给定一个整数数组,奇数位于偶数前面的相关文章

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数

题目描述: 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.   你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用.示例:给定 nums = [2, 7, 11, 15], target = 9返回 [0, 1] 思路: 第一层for循环从索引0到倒数第二个索引拿到每个数组元素,第二个for循环遍历上一层for循环拿到的元素的后面的所有元素. 具体代码: 1 public class Solution { 2 public int[] twoSum(int[] nums,

刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数

今天下午,看了一会github,想刷个题呢,就翻出来了刷点题提高自己的实际中的解决问题的能力,在面试的过程中,我们发现,其实很多时候,面试官 给我们的题,其实也是有一定的随机性的,所以我们要多刷更多的题.去发现问题. 题目:     给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 解析: 实际这里就是给你的一个列表的数字,给你一个预期,让你返

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

示例: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6. 1 class Solution { 2 public int maxSubArray(int[] nums) { 3 int sum=nums[0];//当前遍历到的最大和的子集 4 int max=nums[0];//数组的最大和 5 for(int i=1;i<nums.length;i++){ 6 sum=sum>0?(sum+nums[i]):n

给定一个整数数组(有正数和负数),找出总和最大的连续数列,并返回总和。

示例: 输入:2 , -8 ,3 , -2  ,4 ,-10 输出: 5 (即{3 ,-2 ,4})

给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。

def singleNumber(nums): d={} l=[] for i in nums: if i in d: d[i]+=1 else: d[i]=1 for k,v in d.items(): if v==1: l.append(k) return l 原文地址:https://www.cnblogs.com/zhangtianxia/p/9030522.html

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]

class Solution { public: vector twoSum(vector& nums, int target) { vector temp; for(int i=0;i<nums.size();i++) { for(int j=i+1;j<nums.size();j++) { if(i!=j) { if(nums[i]+nums[j]==target) { temp.push_back(i); temp.push_back(j); break; } } } } ret

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

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变.  思路:新建一个数组先把原数组中的奇数push进去再把偶数push进去,然后用新数组数据覆盖原数组即可 复杂度O(n),用空间换时间 class Solution { public:     void reOrderArray(vector<int> &array) {         vector<int&

剑指offer-数值的整数次方-调整数组顺序使奇数位于偶数前面-代码的完整性-python

题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 保证base和exponent不同时为0 思路 求base的exponent次方,exponent有两种可能性, exponent>0 for循环exponent次,结果与base相乘 exponent<0 for循环exponent次,结果与base相除 输出结果: # -*- coding:utf-8 -*- class Solution: def Power(self

剑指Offer-13:调整数组位置使奇数位于偶数前面

题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变.例如给定一个数组{2,4,6,3,5},调整后的数组为{3,5,2,4,6} 思路一: 最直接的思路是新建一个数组,大小为原数组的大小,利用空间换时间. /* * 新开数组:空间换时间 * 1.遍历数组,若为奇数则从头部放入到原数组中,并记录索引 * 2.若为偶数则放入到新数组中,记录索引 * 3.将两数组合并,从