算法题:找出一个数组中依次最大的k个元素
2015-01-27 22:19
337 查看
package arithmetic; import java.util.Arrays; /** * 找出一个数组中依次最大的k个元素 * @author SHI */ public class FindMaxFigure { public static void main(String[] args) { int[] a=new int[]{1,5,-1,8,0,2}; System.out.println(Arrays.toString(findBigFigure(a, 3))); } /** * 想法:找到一个最大的元素之后,就依次存放到数组的最前面去,直到满足k个为止 * @param a 原始数组 * @param k * @return */ public static int[] findBigFigure(int[] a,int k) { int[] temp = new int[k]; int m = 0; int index = 0; for (; index < k; index++) { int max = a[index];//假设数组中的某个元素是最大的(这里每循环依次,取得的数组元素下标依次是0,1,2...) int flag = 0; for (int j = index+1; j < a.length; j++) { if(max < a[j]) { max = a[j]; flag = j;//保存找到的最大数字的下标 } } //将最大数字依次交换到数组的最前面 int t = a[index]; a[index] = a[flag]; a[flag] = t; //将找到的数保存到数组中 temp[m++] = max; } return temp; } }
相关文章推荐
- 算法题:找出一个数组中相加值最大的连续序列元素
- 算法习题45:对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一;;;一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- Class 找出一个整形数组中的元素的最大值
- php 求一个无序数组经过排列后任意两个相邻元素之差的最大值(算法)
- 在一个数组中查找最大的K个元素或者最小的K个元素
- 基础算法----找出集合中最大和值的子数组,插入排序,找出数组中出现最多的元素
- 说你有一个数组,其中第i个元素是第i天给定股票的价格。设计一个算法来找到最大的利润,最多可以完成两个交易。
- java找出一个数组中出现次数最多且最大的那个元素
- 给一个整数数组,有正有负。找出数组最大和,条件是使用的元素不能有相邻
- n个元素的数组中找出前K个最大数最有效算法O(nlg(k))
- 设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。
- 数据结构第5章例题 若矩阵Am×n中存在某个元素aij满足:aij是第i行中的最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。试编写一个算法,找出A中的所有鞍点。
- c++ 找出一个整形数组中元素的最大值
- 一个无序整数数组,数组元素大于5个,请用一种高效的算法找出其中最大的5个值.
- 在一个整型数组中有一个元素的出现次数超过了数组长度的一半,试设计一个 在时间上尽可能高效的算法,找出这个元素。
- 找出一个整型数组中元素最大值,使用面向对象方法
- Class 找出一个整形数组中的元素的最大值
- 整数数组中,每个元素均出现两次,除了一个元素例外,如何找出这个元素?能否设计一个线性时间的算法,且不需要额外的存储空间?
- 设计一个最优算法来查找n个元素数组中的最大值和最小值
- 设计一个更优算法查找一n个元素数组中的最大值和最小值