华为2012秋季校招机试题-数组处理(题目源自网络)
2014-05-06 14:19
253 查看
数组处理
给定一个数组input[] ,如果数组长度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}
package com.liuhao; import java.util.Arrays; import java.util.Scanner; public class ArraySort { public static void main(String[] args) { System.out.println("请输入数据,以空格间隔,以回车结束:"); Scanner scan = new Scanner(System.in); // 由于不知道输入的元素个数,故只能先读入到字符串中,然后进行分割 String str = scan.nextLine(); String[] strArr = str.split(" "); int n = strArr.length; int[] input = new int ; // 用于存放输入数据 int[] output = new int ; // 用于存放输出数据 // 将字符串数组转换为int数组 for (int i = 0; i < input.length; i++) { input[i] = Integer.parseInt(strArr[i]); } // 直接对输入数据进行排序,得到由小到大的数据 Arrays.sort(input); int flag = n / 2; // 放初始值的位置 int j = 1; // 增量 boolean temp = true; // 用于判断是加增量,还是减增量 for (int i = n - 1; i >= 0 && flag >= 0 && flag < n; i--) { output[flag] = input[i]; if (temp) { flag -= j; // flag左移 } else { flag += j; // flag右移 } temp = !temp; j++; } System.out.println("处理结果:"); for (int i = 0; i < output.length; i++) { System.out.print(output[i] + " "); } } }
相关文章推荐
- 华为2012秋季校招机试题-数组奇偶交叉重组(题目源自网络)
- 华为2012秋季校招机试题-选秀节目打分(题目来自网络)
- java 华为机试题目-数组处理
- java 华为机试题目-数组处理
- 2014年华为校招机试题和多种代码实现(多个数的最大公约数,相同子串,单词计数)
- 【华为OJ】201301 JAVA 题目0-1级 将数组分为相等的两组
- 华为OJ平台试题 ——数组:整形数组合并
- ZJOI2012 网络——LCT相关题目
- 【ACM】华为-2012-校园招聘机试题
- 华为机试题----比较二维数组列最小值,组成一个新数组返回
- 整型数组处理算法(八)插入(+、-、空格)完成的等式:1 2 3 4 5 6 7 8 9=N[华为面试题]
- 2016校招华为机试题——好友推荐
- 2014 华为校招机试题(c/c++开发类)
- 2012华为2011年9月17日上机题目之最长回文
- 华为OJ平台试题 —— 数组:输入n个整数,输出其中最小的k个
- 写给自己的网络请求解析 返回数组和字典类型不同的处理方法
- 华为2012编程大赛题目(1)
- 2016校招华为机试题目回忆
- 2012华为2011年9月17日上机题目之约瑟夫环模拟法实现程序