博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
华为招聘机试整理7:给定一个数组input[]
阅读量:5266 次
发布时间:2019-06-14

本文共 2030 字,大约阅读时间需要 6 分钟。

华为招聘机试整理7:给定一个数组input[]

题目:给定一个数组intput[]

假设数组长度n为奇数。则将数组中最大的元素放到 output[] 数组最中间的位置,假设数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上。然后再按从大到小的顺序,依次在第一个位置的两边。依照一左一右的顺序,依次存放剩下的数。

比如:input[] = {3, 6, 1, 9, 7} output[] = {3, 7, 9, 6, 1};
input[] = {3, 6, 1, 9, 7, 8} output[] = {1, 6, 8, 9, 7, 3}
题目分析:
该题主要考察数组之间数据的排列和数组与数组直接数据的传送与接收。
算法思路:
①首先将输入的整型数据按升序排列 这里没有必要用冒泡法直接用#include<algorithm>中的sort
②找出中间位置middle,而且将最大的数据放进middle
③之后一个for循环。
1)当n为奇数时,我们能够直接以middle为中界限。循环去向左向右去查找,i 从1->middle
因为左边比右边大,所以将大的放入左边。次大的放入右边。

2)当n为偶数时,我们以middle为中界限,这里就要注意了,输出数据中第一位数据无法循环到,所以我们i 仅仅能从1->middle-1了,并且最后直接将输入最小的数值放入输出数组的第一位上面。

这里须要注意一个小技巧就是,数组直接数据的传输,我们最好设置一个新的变量k。

===============================================================================

參考代码:

//给定一个数组input[]//2014.7.10 hepanhui#include 
#include
const int maxn = 100;using namespace std;void sort(int input[], int n, int output[]){ int middle; int k = 1; sort(input,input + n); //n为奇数时 if(n%2) { middle = (n-1)/2; output[middle] = input[n-1]; for(int i = 1; i <= middle; i++) { output[middle - i] = input[n - 1 - k]; output[middle + i] = input[n - 2 - k]; k = k + 2; } } else { middle = n/2; output[middle] = input[n-1]; for(int i = 1; i < middle; i++) { output[middle - i] = input[n - 1 - k]; output[middle + i] = input[n - 2 - k]; k = k+2; } output[0] = input[0]; }}int main(){ int n; cin >> n; int input[maxn], output[maxn]; for(int i = 0 ;i < n; i++) { cin >> input[i]; } sort(input, n, output); for(int i = 0; i < n-1; i++) { cout << output[i] << ","; } cout << output[n-1] << endl; return 0;}

调试中易犯错误的地方:

①我们这里不须要#include<string>整型数组输入的时候,我们一般都会告诉数组有多大。我们不能用strlen来測其大小,由于strlen是用来測量字符串。

②for循环的时候要注意i是从1開始的,而不是0.由于我们中间最大的已经赋值了。
③数组间数据传送,我们有时候採用如果一个新的变量,这样会方便些。

转载于:https://www.cnblogs.com/jzdwajue/p/6977981.html

你可能感兴趣的文章
坏的事情不都会带来坏的结果
查看>>
设置placeholder的样式
查看>>
RPC的基础:调研EOS插件http_plugin
查看>>
HIT1946 希尔伯特分形曲线(dfs)
查看>>
第二次团队冲刺第二天
查看>>
青瓷引擎之纯JavaScript打造HTML5游戏第二弹——《跳跃的方块》Part 2
查看>>
bzoj 2257 (JSOI 2009) 瓶子与燃料
查看>>
11)Java abstract class 和 interface
查看>>
使用xrdp或Xmanager 远程连接 CentOS6
查看>>
CDC类介绍
查看>>
SEH简单研究
查看>>
Dubbo -- 系统学习 笔记 -- 配置参考手册
查看>>
LeetCode Problem 3.Longest Substring Without Repeating Characters
查看>>
Linux误删恢复
查看>>
eclipse中的.project 和 .classpath文件的具体作用是什么?
查看>>
Unity调用Windows窗口句柄,选择文件和目录
查看>>
字节流缓存
查看>>
HashMap循环遍历方式
查看>>
python面试题(二)顺时针打印二维数组,快速排序
查看>>
第一次作业,三班王泽04
查看>>