您的位置:首页 > 其它

算法题:找出一个数组中依次最大的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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐