华为招聘机试整理14:数组奇数偶数排序「建议收藏」

华为招聘机试整理14:数组奇数偶数排序

大家好,又见面了,我是全栈君。

华为招聘机试整理14:数组奇数偶数排序

题目:数组奇数偶数排序
对一个数组。将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数 若奇数和偶数不等长,则把剩下的直接放到数组中。

题目分析:
本题主要就是考查整型数组之间的排序
算法思路:
①先循环推断每一个数的奇数偶数。分别放入奇数数组中,偶数数组中
②用sort将奇数数组和偶数数组排序
③比較奇数数组和偶数数组个数的大小关系
④依据题目要求组织存放数据

==========================================================================
參考代码:

//数组奇数偶数排序.cpp
//2014.7.11 hepanhui
#include <iostream>
#include <algorithm>
const int maxn = 100;
using namespace std;

bool compare(const int a, const int b)
{
    return a > b;
}

void Sorted(int a[], int n)
{
    int odd[maxn];
    int even[maxn];
    int k = 0, j = 0, m1 = 0;
    int cnt1 = 0,cnt2 = 0;
    for(int i = 0; i < n; i++)
    {
        if(a[i]%2)
        {
            odd[k++] = a[i];
            cnt1++;
        }
        else
        {
            even[j++] = a[i];
            cnt2++;
        }
    }
    odd[k++] = '\0';
    even[j++] = '\0';

    sort(odd, odd + cnt1);
    sort(even, even + cnt2, compare);

    if(cnt1 >= cnt2)
    {
        for(int m = 0; m < cnt2; m++)
        {
            a[m + m1] = odd[m];
            a[m + m1 + 1] = even[m];
            m1 = m1 + 1;
        }
        for(int i = 0; i < cnt1 - cnt2; i++)
        {
            a[2*cnt2 + i] = odd[i+cnt2];
        }
    }
    else
    {
        for(int m = 0; m < cnt1; m++)
        {
            a[m + m1] = odd[m];
            a[m + m1 + 1] = even[m];
            m1 = m1 + 1;
        }
        for(int i = 0; i < cnt2 - cnt1; i++)
        {
            a[2*cnt1 + i] = even[i+cnt1];
        }
    }
    a[n+1] = '\0';
}

int main()
{
    int a[10] = {2, 3, 14, 6, 2, 15, 12, 14, 4, 11};
    Sorted(a,10);
    for(int i = 0; i<10-1; i++)
        cout << a[i] << " ";
    cout << a[10-1] << endl;
    return 0;
}

调试中易犯的错误:
①不要忘记odd[k++] = ‘\0’ even[j++] = ‘\0’
②这里须要注意组织整理存放数据的时候。一定要区分于《华为招聘机试整理7:给定一个数组input[]》这道题目,m1这里是加1。这里特别easy犯错,由于我们m每次循环的时候都加了1
③不要忘记a[n+1] = ‘\0’切记不能写成a[n] = ‘\0’
③对于整型数组主函数的时候。一定要注意个数n须要标识,假设嫌麻烦,我们直接给详细数字④对于这里也能够採用申请动态内存空间来保存奇数数组和偶数数组
int *odd = (int *)malloc(sizeof(int) * n);
int
even = (int *)malloc(sizeof(int) * n);


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116487.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • dvwa通关攻略_猫里奥通关攻略

    dvwa通关攻略_猫里奥通关攻略简介:DVWA是一款基于PHP和mysql开发的web靶场练习平台,集成了常见的web漏洞如sql注入,xss,密码激活成功教程等常见漏洞。本教程将以DVWA为例,演示常见的web漏洞的利用和攻击。登录创建数据库(账号为admin,密码为password)登录后界面在dvwasecurity选项中,可以调整dvwa的难易程度,BruteForce(暴力激活成功教程)BruteForce即为暴力激活成功教程,通过枚举获取管理员的账号和密码,在实际的操作中,一般用来激活成功教程后台管理系统的登录。

  • Windows10下安装Oracle 11g

    Windows10下安装Oracle 11g一、下载Oracle官方下载地址:https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html官网下载需要登陆Oracle账号,没有的可以注册一个。这里我分享一个百度云盘的下载链接(只有64位的):https://pan.baidu.com/s/1SV0CpCDew_lSVhISS…

  • ios应用接入微信开放平台

    ios应用接入微信开放平台

  • 文本框事件顺序[通俗易懂]

    文本框事件顺序[通俗易懂]http://www.cnblogs.com/williambirkin/archive/2007/05/09/740297.html

    2022年10月27日
  • qt 如何设计好布局和漂亮的界面。

    qt 如何设计好布局和漂亮的界面。文章目录前言一.布局相关组件介绍(:sunny:)1.Layouts(布局):large_blue_circle:VerticalLayouts(垂直布局):large_blue_circle:HorizontalLayouts(水平布局):large_blue_circle:GridLayouts(网络布局):large_blue_circle:FormLayouts(窗体布局)2.Spacers(空间间隔器/弹簧)3.UI设计器工具栏:large_blue_circle:分割布局器二.Qt样..

  • PotPlayer 64 bit快捷键大全

    PotPlayer 64 bit快捷键大全PotPlayer64bit快捷键大全前言-`д´-最近用PotPlayer64bit,在不知道的情况下视频翻转一下或者各种奇葩样子,总归一句话,弄不好了(눈_눈)。今天有时间总结一下(¬、¬)。  下载安装ヽ(o・་།・o)ノPotPlayer中文网PotPlayer官网ᕦ(・ㅂ・)ᕤ 快捷键方法一????安装完之后,右键–>关于–>有没有看到快捷键列表,就是那个????方法二????看下面看下面,没错,又是它

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号