首页 > 编程语言 > 详细

算法题:找出一个数组中依次最大的k个元素

时间:2015-01-27 23:16:32      阅读:383      评论:0      收藏:0      [点我收藏+]
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;
    } 
}

算法题:找出一个数组中依次最大的k个元素

原文:http://www.cnblogs.com/shi-blog/p/4254368.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!